{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "1a64365a-d2e7-4c17-a72e-6c217573393e",
   "metadata": {},
   "source": [
    "## 基本概念"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "28982d68-9cae-4726-8103-57bbee7fe8c5",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from matplotlib import pyplot as plt\n",
    "import warnings\n",
    "\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "22b4531f-ae75-4f37-a83e-287e8174dc48",
   "metadata": {},
   "source": [
    "### 简单线性回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "5eeba9e0-06d5-4803-9866-cef7133e3a36",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f69afae1f00>]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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jx5lxIgRREdHExMTw7Bhw8jPzzc7lsscPnyYiIgIVqxYYXYUpzl9+jQPPvggUVFRNGzYkLvvvpvS0lKzYznN3r17GThwIBERETRq1Ihbb72VvLw8s2PVO8MwuOqqq8jIyDizbc2aNSQlJREcHEz37t354osvTExYv853vitXrqRnz56EhoaSmJjI9OnTTUxYv853vj82c+ZMYmJiXJzKHD5ZRu677z527tzJ8uXL+cc//sFbb73FG2+8YXYsp6ipqeH666+nuLiYVatWsWLFCgoLC3nkkUfMjuYyDz300JmPFfBWjz32GN999x2LFy9m1apVHDx4kAceeMDsWE7z2GOPERwczLp16/jXv/5FRUUFTz75pNmx6pXdbic9PZ1Nmzad2Xbo0CFuu+02+vbty6ZNmxgyZAi33nqrV/xycb7z/eqrrxgyZAh33nknmzdvZtq0aUybNo3FixebmLR+nO98f2zfvn089dRTLk5lIsPH7Nu3zwCMrKysM9veffddIzEx0bxQTrRhwwajXbt2RkVFxZltGzduNEJDQw2Hw2FiMtd4++23jZ49expxcXHG8uXLzY7jFMePHzf8/f2Nffv2ndmWn59v7Ny508RUzhUXF2d88sknZ75esGCB0alTJxMT1a9NmzYZV111lZGQkGC0bt3amD17tmEYhvH0008bycnJZz12+/XrZzz33HNmRa0XP3W+Tz75pPHEE0+cte8jjzxi/P73vzcjZr35qfP9gcPhMPr162cMGTLEiI6ONimla/ncysg333xDQkICycnJZ7YNHjyYAwcOUFBQYF4wJ+nduze7du0iNDT0zDar1YrNZsPhcJiYzPny8/OZNGkS7777Ln5+fmbHcZr169eTmJjIhg0baNu2LW3atOGtt96iffv2Zkdzmr59+7J48WIqKyspLy9n8eLFXHfddWbHqjevv/46vXr1Iisri5YtW57Z/s0333D77bef9TldgwcPZsOGDWbErDc/db4zZszgtddeO2tfq9VKdXW1qyPWq5863x/MmTOHuro6Ro0aZUI6c7j9Z9PUt/z8fBISEs7a1qxZM4KDg8nLy6Np06bmBHOi//6AohdffJH+/ft79QUa4OGHHyY9PZ2uXbuaHcWpcnNzOXHiBLNmzeLNN9/EMAzS09MJCAhg8uTJZsdzir/85S/06NGDBg0aYBgG7du3JzMz0+xY9eYf//gHAQEB52w/3/NX69atef/9912UzDl+6nzh7OevvLw85s6dy5///GdXRXOKC53vwYMHefbZZ1m/fj3Hjh1zcTLz+NzKiM1mIyoq6pztISEhVFVVuT6QCxmGwdixY1m7di2zZs0yO45Tvffee+Tl5XntxfjHKioqqK6uZtmyZQwYMICBAwcybdo03nnnHbOjOc1jjz1Gz549Wb9+PWvWrCE6Oppx48aZHave/NSF6nzPX97w3PVT5/tj+fn5DB48mKuvvpqRI0e6IJXz/NT5GobBgw8+yPjx4+nQoYOLU5nL51ZGQkJCqKmpOWd7VVUVISEhJiRyjaqqKu655x42btzImjVr6NSpk9mRnOb48eOMHz+elStXXtSTnKcLDAwkKSmJ2NjYM9s6d+7M4cOHsdvtXrcClpOTw4oVKygoKDjzmG3Tpg1t27Zl6tSpXrm6+YPzPX95+3MXQHZ2NjfffDNXXHEF77///s9+HL2n+tvf/kZpaSkTJkwwO4rL+VwZadmyJbm5uWdtKywspLq6mri4OHNCOVlVVRWDBg2iuLiYTZs2ee15/mDatGkUFRXRt2/fM9tsNhtDhw7ls88+o1+/fiamq3+xsbEcPnwYwzDO3EtQUVGBn5+fVz5p79y5k1atWp11AW7dujXBwcEcPHjQq8vI+Z6/Dh065NWP6U2bNjFw4EAefPBBZsyYcdb9Mt5mwoQJVFVVERYWBoDD4aC2tpYOHTqwe/duk9M5l/c9U/2MPn36sHv37rMe0KtXr6ZVq1Y0a9bMvGBO9NBDD1FSUsK6deu8+knrB5MmTWLHjh1kZ2ef+dO8eXNmzZpFz549zY5X73r37k1BQQGLFi06s23x4sW0adPGK5+4mzRpwtGjR6mtrT2zraioiMrKSq99DP/g6quv5tNPPz1r2+rVq7nqqqtMSuRcx44d45ZbbmHs2LHMnDnTK3+ef+zbb79l69atZ5633n77baKioli5cqXZ0ZzO51ZG4uLiGDJkCPfeey8zZ86kpKSEiRMn8sQTT5gdzSk+/fRTFi5cyPLlyykpKaGkpOTM9+Li4vD3974fgdjY2LNGFvCfGW1cXNxZryryFu3atWPQoEHcc889LFmyhMrKSpYtW/aTb6Tk6a688kpCQkJ4+OGHGTNmDDU1NTz77LP07NmTVq1amR3Pqe6//35eeuklnn/+eYYPH86SJUvYuHEj7777rtnRnOKJJ56gZcuW/Pa3vz3rF8jg4GCvLJ4dO3Y86+vjx4/j5+dHmzZtTErkOt53JboIb731Funp6Vx33XUEBgbywAMPeNXNbz+2aNEiamtrGTRo0DnfO3jw4Dl35otn+uc//8mjjz7K8uXLad68Oa+++irp6elmx3KKsLAwVqxYwfjx48+8Kqxv374sWrTI639zjo2N5ZNPPmH06NG88MILtGnThiVLlnhtCVu0aBGGYZCYmHjW9muvvZYvv/zSnFDiFBbD8OL3QRcRERG353P3jIiIiIh7URkRERERU6mMiIiIiKlURkRERMRUKiMiIiJiKpURERERMZXKiIiIiJhKZURERERMpTIiIiIiplIZEREREVOpjIiIiIipVEZERETEVP8Pv5DzKloYXFUAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(0, 15, 50)\n",
    "\n",
    "plt.plot(x, 0.8 * x - 5)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9ebdf3e6-9e9b-4de5-98c3-2100e7ab96b7",
   "metadata": {},
   "source": [
    "## 正规方程"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6d0a1386-f7fa-4701-bcd8-005e1554abb4",
   "metadata": {},
   "source": [
    "### 多元一次方程举例"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a91c54b5-7b66-4a3b-85f6-8af1ffa3a425",
   "metadata": {},
   "source": [
    "```\n",
    "pip install -U scikit-learn\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "62cbb865-7f4a-4547-bf85-d1990f3f1ed8",
   "metadata": {
    "jp-MarkdownHeadingCollapsed": true
   },
   "source": [
    "#### 二元一次方程"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "69c1639f-5f22-4978-b0d6-457385d8fe11",
   "metadata": {},
   "source": [
    "- $x + y = 14$\n",
    "- $2x - y = 10$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "87180f18-4769-4dc8-9f0c-3bcffa9f0e17",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.array([[1, 1], [2, -1]])\n",
    "y = np.array([14, 10])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1f72610e-2a16-4091-bac0-c5ff72e4d416",
   "metadata": {},
   "source": [
    "**使用 `np.linalg` 求解**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "d56c09ea-aed0-4f6a-a5c2-e42c3c2fa364",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([8., 6.])"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 1.使用 np.linalg 求解\n",
    "np.linalg.solve(x, y)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "34549d11-e863-43d6-9995-dad931f0f7c2",
   "metadata": {},
   "source": [
    "**使用正规方程求解**\n",
    "\n",
    "$W=(X^TX)^{-1}X^Ty$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "119ba90b-640a-4baf-b1b2-6393eab3c87a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([8., 6.])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 2.使用正规方程求解\n",
    "np.linalg.inv(x.T @ x) @ x.T @ y"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9841ef2d-20a6-4172-8d1b-a019abb2a665",
   "metadata": {
    "jp-MarkdownHeadingCollapsed": true
   },
   "source": [
    "#### 三元一次方程\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "016efe43-75e4-4c11-ad1a-b7c26d034397",
   "metadata": {},
   "source": [
    "- $x - y + z = 100$\n",
    "- $2x + y - z = 80$\n",
    "- $3x - 2y + 6z = 256$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "3c34dd47-93f1-4d8f-aba5-15e980acfe97",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.array([[1, -1, 1],\n",
    "             [2, 1, -1],\n",
    "             [3, -2, 6]])\n",
    "y = np.array([100, 80, 256])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "2caca742-8753-4074-8921-d72bb9b3b7b2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 60., -41.,  -1.])"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.linalg.solve(x, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "2797282e-5d2a-442a-bebb-d28228a33e8b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 60., -41.,  -1.])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.linalg.inv(x.T @ x) @ x.T @ y"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1aead03b-dcd9-47cc-8147-fcd34eff453c",
   "metadata": {
    "jp-MarkdownHeadingCollapsed": true
   },
   "source": [
    "#### 八元一次方程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "63c63cd4-d59d-40a8-89ae-5dcc466cd7c1",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.array([[0, 14, 8, 0, 5, -2, 9, -3],\n",
    "            [-4, 10, 6, 4, -14, -2, -14, 8],\n",
    "            [-1, -6, 5, -12, 3, -3, 2, -2],\n",
    "            [5, -2, 3, 10, 5, 11, 4, -8],\n",
    "            [-15, -15, -8, -15, 7, -4, -12, 2],\n",
    "            [11, -10, -2, 4, 3, -9, -6, 7],\n",
    "            [-14, 0, 4, -3, 5, 10, 13, 7],\n",
    "            [-3, -7, -2, -8, 0, -6, -5, -9]])\n",
    "\n",
    "y = np.array([339, -114, 30, 126, -395, -87, 422, -309])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "0175d296-6d15-47f7-8a7c-241c98033920",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.,  5., 15.,  3.,  8.,  4., 17., 12.])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.linalg.solve(x, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "fe7872ae-ed7b-40f2-aa11-76dac37263c4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.,  5., 15.,  3.,  8.,  4., 17., 12.])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.linalg.inv(x.T @ x) @ x.T @ y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "5eb276bc-ba65-44ee-bc2a-bf477054eed2",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "114c1ed6-28ec-4fb8-b987-201a999ed647",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.array([[0, 14, 8, 0, 5, -2, 9, -3],\n",
    "            [-4, 10, 6, 4, -14, -2, -14, 8],\n",
    "            [-1, -6, 5, -12, 3, -3, 2, -2],\n",
    "            [5, -2, 3, 10, 5, 11, 4, -8],\n",
    "            [-15, -15, -8, -15, 7, -4, -12, 2],\n",
    "            [11, -10, -2, 4, 3, -9, -6, 7],\n",
    "            [-14, 0, 4, -3, 5, 10, 13, 7],\n",
    "            [-3, -7, -2, -8, 0, -6, -5, -9]])\n",
    "\n",
    "y = np.array([339, -114, 30, 126, -395, -87, 422, -309])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "e811716b-637d-4436-96e7-09f78316e04c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# fit_intercept 表示是否计算截距。我们提供的八元一次方程没有设置截距，所以不设置\n",
    "model = LinearRegression(fit_intercept=False)\n",
    "\n",
    "# 拟合（将机器学习模型与训练数据进行匹配，以学习数据中的模式和关系）\n",
    "reg = model.fit(x, y)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "90f6dabd-854b-47a7-963d-9419d0488ce0",
   "metadata": {},
   "source": [
    "fit：拟合是指将机器学习模型与训练数据进行匹配，以学习数据中的模式和关系。在拟合过程中，模型会调整自身的参数，以最大程度地减小预测值与实际值之间的差异。通过调用\"fit\"方法，模型会根据提供的训练数据进行学习，从而使其能够在未见过的数据上进行准确的预测。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "34a88031-8585-439d-becc-a17d0ad7695e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.,  5., 15.,  3.,  8.,  4., 17., 12.])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# coefficent，系数\n",
    "reg.coef_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "fbae7222-d853-447f-afc6-f1a02e29335c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.0"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 截距\n",
    "reg.intercept_"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8d6dc929-768e-4e06-a574-ec9bde58f880",
   "metadata": {
    "jp-MarkdownHeadingCollapsed": true
   },
   "source": [
    "#### 带截距的线性方程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "879706c6-1032-41d7-bc31-7a51333e0a42",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.,  5., 15.,  3.,  8.,  4., 17., 12.])"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reg.coef_"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "90a59fb1-8410-4809-9c05-0c859b20ecc9",
   "metadata": {},
   "source": [
    "所以八元一次函数为\n",
    "\n",
    "$f(x) = x_1 + 5 x_2 + 15 x_3 + 3 x_4 + 8 x_5 + 4 x_6 + 17 x_7 + 12 x_8$\n",
    "\n",
    "---\n",
    "\n",
    "为其**添加截距** $b=12$\n",
    "\n",
    "$h(x) = f(x) + 12$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "887c3efd-f7d0-4fe8-a646-cea932acd9c8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 339, -114,   30,  126, -395,  -87,  422, -309])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "8376c363-fde1-401c-a764-b469736ef816",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 351, -102,   42,  138, -383,  -75,  434, -297])"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "h = y + 12\n",
    "h"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "787d4bfc-97d2-4523-85ed-d73d0a6cfe96",
   "metadata": {},
   "source": [
    "**再次拟合**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "b9b32fb4-1568-4177-8260-97ea9983eedf",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 3.45714358  6.90856568 10.8264159   0.44734523  6.86091921  6.24871714\n",
      " 17.47728367 12.78738885]\n",
      "26.928205008398017\n"
     ]
    }
   ],
   "source": [
    "m = LinearRegression(fit_intercept=True)\n",
    "r = m.fit(x, h) # x(8,8), h(8,)\n",
    "print(r.coef_)\n",
    "print(r.intercept_)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "257e0e20-d270-49c7-a9ff-9538fc9693e9",
   "metadata": {},
   "source": [
    "**分析：输入八个八元一次方程，加上截距相当于八个九元一次方程组，存在多个解**\n",
    "\n",
    "- 八个：x 矩阵行数\n",
    "- 八元：x 矩阵列数"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2c41d85a-4c4a-4247-a724-e639627bef76",
   "metadata": {},
   "source": [
    "**解决办法：再添加一个方程**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "fd432103-9583-4812-b009-1622680fbc3f",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.array([[0, 14, 8, 0, 5, -2, 9, -3],\n",
    "            [-4, 10, 6, 4, -14, -2, -14, 8],\n",
    "            [-1, -6, 5, -12, 3, -3, 2, -2],\n",
    "            [5, -2, 3, 10, 5, 11, 4, -8],\n",
    "            [-15, -15, -8, -15, 7, -4, -12, 2],\n",
    "            [11, -10, -2, 4, 3, -9, -6, 7],\n",
    "            [-14, 0, 4, -3, 5, 10, 13, 7],\n",
    "            [-3, -7, -2, -8, 0, -6, -5, -9]])\n",
    "y = np.array([339, -114, 30, 126, -395, -87, 422, -309])\n",
    "\n",
    "model = LinearRegression(fit_intercept=False)\n",
    "reg = model.fit(x, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "ab6c220e-139a-4a23-a3f0-29121df2e3db",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[10, 16,  2, 14, 11,  4, 16,  1]])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r_x = np.random.randint(0, 20, size=(1, 8))\n",
    "r_x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "7889de0b-d036-4106-a58c-55c3a080537c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[  0,  14,   8,   0,   5,  -2,   9,  -3],\n",
       "       [ -4,  10,   6,   4, -14,  -2, -14,   8],\n",
       "       [ -1,  -6,   5, -12,   3,  -3,   2,  -2],\n",
       "       [  5,  -2,   3,  10,   5,  11,   4,  -8],\n",
       "       [-15, -15,  -8, -15,   7,  -4, -12,   2],\n",
       "       [ 11, -10,  -2,   4,   3,  -9,  -6,   7],\n",
       "       [-14,   0,   4,  -3,   5,  10,  13,   7],\n",
       "       [ -3,  -7,  -2,  -8,   0,  -6,  -5,  -9],\n",
       "       [ 10,  16,   2,  14,  11,   4,  16,   1]])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x2 = np.concatenate([x, r_x])\n",
    "x2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "4291fdb0-23a4-4c04-b890-7d27d81c9fbe",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 339., -114.,   30.,  126., -395.,  -87.,  422., -309.,  550.])"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y2 = np.concatenate([y, reg.coef_ @ r_x.T])\n",
    "y2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "12c7e0d0-10ec-4548-9d06-1ca98ab09b83",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 1.  5. 15.  3.  8.  4. 17. 12.]\n",
      "12.000000000000043\n"
     ]
    }
   ],
   "source": [
    "model = LinearRegression(fit_intercept=True)\n",
    "reg = model.fit(x2, y2 + 12)\n",
    "print(reg.coef_)\n",
    "print(reg.intercept_)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "73890f8a-d0ec-484e-88c6-4a080ab47e7f",
   "metadata": {},
   "source": [
    "## 线性回归实战"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a91c7a70-3723-4078-93a6-0c192361e90e",
   "metadata": {},
   "source": [
    "### 使用正规方程进行求解"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8a07b835-0ec5-459f-9274-b4d91b493e26",
   "metadata": {},
   "source": [
    "**1. 随机生成样本**\n",
    "\n",
    "1. 随机生成等差数列\n",
    "2. 随机生成斜率和截距\n",
    "3. 根据 $y=xw+b$ 计算 y，添加噪声模拟真实值\n",
    "\n",
    "**2. 使用正规方程倒推斜率和截距**\n",
    "\n",
    "已知样本数据，即 $X(30, 1)$ 和 $y(30, 1)$，使用正规方程计算权重 $W$\n",
    "\n",
    "$W=(X^TX)^{-1}X^Ty$\n",
    "\n",
    "（也可用 sklearn 提供的线性回归类计算）\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "d825a708-42c2-413c-b567-1180ac01665e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "真实斜率和截距为 [1] [2]\n",
      "计算的结果是 [1.04 1.53]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh0AAAGdCAYAAAC2OMGiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABCVUlEQVR4nO3deViVdf7/8Seggpoc0zJQXJCsiaE0NZQyy8xCJ20vNbWstNQWl8ayqYyptKbGSpucxrJMzEwnSzQxW8fUxEL9ZmgrJiloRgIuoHLu3x+fHySBynKfc5/l9bgurvG+uTnnPVwpLz7L+xNiWZaFiIiIiIeFOl2AiIiIBAeFDhEREfEKhQ4RERHxCoUOERER8QqFDhEREfEKhQ4RERHxCoUOERER8QqFDhEREfGKek4XUMbtdrNz506aNGlCSEiI0+WIiIhINViWRVFRES1btiQ09PhjGT4TOnbu3Enr1q2dLkNERERqIScnh5iYmOM+4zOho0mTJoApOjIy0uFqREREpDoKCwtp3bp1+c/x4/GZ0FE2pRIZGanQISIi4meqszRCC0lFRETEKxQ6RERExCsUOkRERMQrFDpERETEKxQ6RERExCsUOkRERMQrahU6LMuie/fuvPDCC+X33nvvPbp27UqjRo1o3749U6dOta1IERER8X81Dh2lpaWMGTOGdevWld/79NNPufrqq7nhhhv44osvmDJlClOmTGHRokW2FisiIiL+q0bNwTIyMrj33nvJy8sjNja2/P67777L6NGjmThxIgDx8fF88sknfPjhh1x33XX2ViwiIiJ+qUYjHc899xyJiYls2LCBNm3alN+fNm0a//znPyu+cGgoxcXF9lQpIiIifq9GIx1z5syhfv36VX7u6JPlcnJymDdvHi+++OIxX6ukpISSkpLy68LCwpqUIiIiIn6mRiMdxwocR9uxYwd9+/blggsuYNCgQcd8burUqbhcrvIPnTArIiIS2GzdMrtx40a6detGhw4dWLhwYYXRjz+aNGkSBQUF5R85OTl2liIiIiJltm+Hyy6Dr792tAzbQse6deu48MILuf7663n77bdp3LjxcZ8PDw8vP1FWJ8uKiEh1lLot1v7wK+9u3MHaH36l1G05XZLvW7wYOnWClSth5EiwnPue2XK0fW5uLv3792f8+PGkpKTY8ZIiIiIVpG/OJSUti9yC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jNR/1F6g77N36PvsHfo+e4e+z97jie/1iUY4ymghqYiIiHiFQoeIiIh4RVCEjvDwcCZPnkx4eLjTpQQ0fZ+9Q99n79D32Tv0ffYeX/he+8xCUhEREQlsQTHSISIiIs5T6BARERGvUOgQERERrwjo0LFnzx6uu+46GjduzGmnncbDDz9crTatUjM7d+5k4MCBNG/enFNOOYVrr72WHTt2OF1WwNu+fTuRkZEsXbrU6VICzr59+7j99ttp2rQpJ598MjfddBMFBQVOlxVwvvvuOy699FIiIyNp1qwZAwYMICcnx+myAoZlWXTv3p0XXnih/N7KlStJSEggIiKCjh078vHHH3u1poAOHTfffDNbtmwhLS2NOXPmMGvWLJ5//nmnywoohw4d4rLLLiM/P5/09HSWLl3K7t27ueOOO5wuLeCNGDGi/PgAsdfo0aNZv349ixYtIj09nezsbG677Tanywo4o0ePJiIiglWrVvH++++zf/9+xo0b53RZAaG0tJQxY8awbt268ns//fQTV155JT169GDdunVcffXVDBgwwLu/JFoB6vvvv7cAa8OGDeX3Zs+ebbVv3965ogLQmjVrrA4dOlj79+8vv7d27VqrUaNGltvtdrCywPbyyy9bXbt2tWJiYqy0tDSnywkoeXl5Vr169azvv/++/N6OHTusLVu2OFhVYIqJibGWLVtWfv3mm29aZ511loMVBYZ169ZZ3bt3t9q1a2fFxsZaM2bMsCzLsh566CGrU6dOFf5t7tmzp/X3v//da7UF7EjH559/Trt27ejUqVP5vb59+/Ljjz+ya9cu5woLMElJSWzdupVGjRqV3wsNDaWkpAS32+1gZYFrx44dTJo0idmzZxMWFuZ0OQFn9erVtG/fnjVr1nD66acTFxfHrFmzOOOMM5wuLeD06NGDRYsWceDAAYqKili0aBEXX3yx02X5veeee47ExEQ2bNhAmzZtyu9//vnnXHXVVRXON+vbty9r1qzxWm0+c/aK3Xbs2EG7du0q3IuKiiIiIoKcnBxOO+00ZwoLQH884OfJJ5+kV69e+oHoISNHjmTMmDGcffbZTpcSkLZt28Yvv/zC9OnTeemll7AsizFjxlC/fn0efPBBp8sLKDNnzqRLly6cdNJJWJbFGWecQWZmptNl+b05c+ZQv379Sver+rkYGxtLamqqlyoL4DUdJSUlNG3atNL9hg0bcvDgQe8XFAQsy2L8+PF89NFHTJ8+3elyAtLrr79OTk6Ofvh50P79+ykuLmbJkiX07t2bSy+9lClTpvDKK684XVrAGT16NF27dmX16tWsXLmS5s2bM2HCBKfL8ntVBQ6o+ueit38mBuxIR8OGDTl06FCl+wcPHqRhw4YOVBTYDh48yNChQ1m7di0rV67krLPOcrqkgJOXl8d9993He++9d8x/VKTuGjRoQEJCAtHR0eX34uPj2b59O6WlpRrBs8mmTZtYunQpu3btKv83OS4ujtNPP52UlBSNRntAVT8Xvf0zMWBHOtq0acO2bdsq3Nu9ezfFxcXExMQ4U1SAOnjwIMnJyXzzzTesW7eO8847z+mSAtKUKVPYs2cPPXr0ICIigoiICH766SeuueYa/ve//zldXsCIjo5m+/btFbbX79+/n7CwsEpTiVJ7W7ZsoW3bthV+4MXGxhIREUF2draDlQWuqn4u/vTTT179mRiwf4POP/98vvnmmwrf4BUrVtC2bVuioqKcKywAjRgxgr1797Jq1SoFOg+aNGkSWVlZbNy4sfyjZcuWTJ8+na5duzpdXsBISkpi165dLFy4sPzeokWLiIuLq7AAT+qmRYsW7Ny5k8OHD5ff27NnDwcOHNC/0R5ywQUXsHz58gr3VqxYQffu3b1WQ8BOr8TExHD11VczbNgwnn32Wfbu3csDDzzA2LFjnS4toCxfvpy33nqLtLQ09u7dy969e8s/FxMTQ716AfufmNdFR0dXGPIHM3cbExNTYfeQ1E2HDh1ITk5m6NChLF68mAMHDrBkyZIKDZak7rp160bDhg0ZOXIk9957L4cOHeLRRx+la9eutG3b1unyAtKtt97KU089xWOPPcb111/P4sWLWbt2LbNnz/ZaDQE70gEwa9YsWrduzcUXX8wNN9zATTfdpEVKNlu4cCGHDx8mOTmZ2NjYCh8///yz0+WJ1MrcuXMZMGAAaWlpbNmyhWeeeYYxY8Y4XVZAady4MUuXLiUnJ4devXrRr18/GjRowMKFCzWi5CHR0dEsW7aMt99+m44dOzJ37lwWL17s1ZCno+1FRETEKwJ6pENERER8h0KHiIiIeIVCh4iIiHiFQoeIiIh4hUKHiIiIeIVCh4iIiHiFQoeIiIh4hUKHiIiIeIVCh4iIiHiFQoeIiIh4hUKHiIiIeIVCh4iIiHjF/wMvAkN025uYaAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "X = np.linspace(0, 10, num = 30).reshape(30, 1) # 等差数列\n",
    "w = np.random.randint(1, 5, size = 1) # 随机斜率\n",
    "b = np.random.randint(1, 10, size = 1) # 随机截距\n",
    "noise = np.random.randn(30, 1) # # 噪声\n",
    "y = (X * w + noise) + b #计算真实值。添加噪声，模拟真实值\n",
    "# y(30, 1) = X(30, 1) · w(1, 1) + b(1, 1)\n",
    "\n",
    "#根据样本数据绘制散点图\n",
    "plt.scatter(X, y)\n",
    "#---------------------- 2 -------------------------------------\n",
    "\n",
    "# X(30, 1) ------添加系数列----->  X(30, 2)。    也可以将系数列放在第一列\n",
    "X = np.concatenate([X, np.full(shape = (30, 1), fill_value = 1)], axis = 1)\n",
    "\n",
    "# 使用正规方程求解 W\n",
    "W = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y).round(2)\n",
    "\n",
    "print('真实斜率和截距为', w, b)\n",
    "print('计算的结果是', W.flatten())\n",
    "\n",
    "# 根据计算出的 w 和 b 绘制“模型”\n",
    "_ = plt.plot(X[:, 0], X.dot(W), color='red')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f72a4849-781b-4b6a-9b51-f3528feb9f9c",
   "metadata": {},
   "source": [
    "**多元线性回归**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "56fed76a-40d2-4b1c-b0c7-23043445aff7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "真实斜率和截距为 [2 4] [6]\n",
      "计算的结果是 [2.   4.   6.49]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[<mpl_toolkits.mplot3d.art3d.Line3D at 0x7f6993c9d0f0>]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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tJZMLk91zqQvapPTJUKahFs38E3GGJM9qJKEhM1UVYjBXdvxhyoZTxjc36PSN6Vj2TY2EjkTNEVCkiXcMtxUb/H+11xCTVWQhspC85QdnVG+/uRphuNZFFnihi3VfPiVW2mp9nI8MoVu2uyqD+DWXrqRKbLEJ27fwe/e2MahwTiVHo2r26tKa+yr4UI73+b7vF6vlx07drBly5ZSo4+TJ0/S0tJCU1NTaV19LfeNcglgOda7XS4XW7ZsobOzk9HRUQYHB+np6aGhoYHm5uZlu+E3m5g/++yzdHR0zPp899xzD1dddRV/+Id/yDve8Q6efvppPvWpT/GJT3wCgA984APccMMNXH/99dx666185StfYWpqire+9a1rHo8Q8zXidDEH51rmcO7GVsw7XiiKeiie5fBQmp6JHP0JncmMRZVmkT51ArBwK5DS4YHxBBbgUiT6xiUq3QrNlRohv8pASsJfFaLK7ymtGd+saYylTeJHTlD5r19n63e/weGGbbz7rX9K2u0jFaggJctEdImWrMx42mIik8fnVklmdRRFxjBt3JpCbcBFzrDZWZWlpcpDMOgpfb5X7Qpz6/YQA5MZvJpCw4x9FzVWnj0hM2gIemb9/fnGRlWAU1WVtrY2WlpaGBsb48yZM6V19aIrdiPFuNxd02RZpqGhgYaGBqamphgYGODZZ5+loqKiFDA3n3einJb5UscpZ2raoUOHuOSSS2Zt2717Nz/60Y+47777+MIXvkA4HOb9738///N//k8ALr/8cr71rW/xiU98gg996ENcdtll/OQnP5mVt75ahJivEaeLuZPHt5KL17btRQt9LJWPXEwfVBTlrECumC7z4+4MfTGdyZxNKg+GCUm90H2pIeimrcbHZNpgdCrHcCJHU9CDV5NJ6hanUzK7GyqQZYna+ibCFS/likuHDhH8P/8H5YEHStuevv03sKuqUGwJn1tFkiRyhklPNIVu2SXL2AZM00KWJDK6STpnckV7FTursvPOkabIor76OWY553CxjGpdXd2sdXWAqakpAoHAqteZ18J6HqOiooLdu3ezbds2hoeHOXXqFN3d3aUKcx6PZ8ljrHY85yo17Z/+6Z/m3f6qV72q1Fd9Pt785jfz5je/uSxjmMkFLeblehJ0qliCs9yec63jeDyOruucPn16ybxjwzAASutzC0VXezyeefcXf5/P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jz+u7OO///2vtHLlSsloNEqrV6+W3nnnnTHP8dBDD0nJycmS2WyWzj77bKm+vn6xX6aKikqQsnPnTiknJ0caHh5Wtu3atUuyWCxST0+PBEhVVVV+H3vyySdLW7ZsUf4fGBiQQkNDpQ8++GChly199NFHkslkkjZu3Cj98pe/HHNbUVGRFBISIkmSJIWEhEh79uwZc/uDDz4offGLX1zwNS4lSzf54TOKwWDg9ddfRxAENm7cyOWXX86qVat49tlnMZvNbN26lUOHDrF27VruvfdeTjnllDGDW+rr6/nKV77CySefzO7du7ngggv48pe/THNzM/DplfNtt93Grl27MJlMnH/++Up2uIqKymebE088kbKysjGZ3RqNBqfTSUtLC4Df0llRFPnoo4+44IILlG1hYWGcdNJJ7Ny5M6Br3LFjB3/4wx/GbFu5ciUOhwOj0ThlODItLe2oCFfOFlXMl4DMzExeeeUV+vr6aG9v569//aty8KxcuZLt27fzwQcfkJiYSE1NDRkZGcpj//CHP5CXl8fvfvc71qxZw89+9jPWrVvHs88+C8Bjjz3GjTfeyI033siaNWt4/vnnqays5MMPP1yS16qi8lmipaWF//f//p/SjverX/2qcqG9bds2CgsLMZlMrFmzhnfffXfMYx9++GFSUlKwWCycc845NDQ0LNg6x0/we/DBB9m4cSNdXV3o9XpuuOEGrFYreXl5/OIXv0CSJLq6unA6nX7j0XK8OlDU1tZy5513jnGNV1ZWIggCl1xyCf/9738RRVG5zTccedJJJ7F161blNlEU2bZt27IMV84GVcyDlF//+td87nOf48CBA2OSS4qKijj//PPHxKc2bdrEzp07F/XKWUVFZSxyLLqnp4c33nhDiT9fc801QetRkySJ73//+7zzzjs89thjtLe3A6NGxRtvvMGPfvQj7rvvPv7v//4Pp9MJsCjx6AsuuACLxcKll17Kxx9/zPvvv8/VV1/Neeedx4UXXojT6eTGG2+ktLSUZ555hhdeeIHrrrsOgBtuuIG//vWvPPXUU5SVlXHTTTcxODjI1772tYCuMehYWi+/ymS4XC7l79NOO02JmRcUFEh/+tOfxtz3b3/7m7Ry5Uqpvb1dAqS6uroxt1977bXSDTfcsPCLRWRNpQAACvxJREFUVlH5DDNVLPqOO+6QjjnmGEkUReW2U089VbrnnnskSVqaWPTIyIj01a9+VUpKSlJizAMDA1JJScmY+/3gBz+QLrroIqmzs1MCpI6OjjG3L9T5pby8XDr77LOlsLAwKTExUbrsssukzs5OSZIk6fDhw9LJJ58sGY1GyWazSX/+85/HPPbFF1+UcnNzJYPBIB133HHS3r17A76+YEO1zIMU39I1X6bK1FzMK2cVlaVAkiROOOEEpQYZIDU1FUEQxvy88MILyu2L5b6eKhYdbB41u93OOeecQ3l5Obt37+b4448HRnN6kpKSxtw3KyuL1tZWYmJisFgsixaPzs3N5Y033mBgYICWlhb+9Kc/ERsbC3wajnQ4HNTW1k6oH7/wwgspLy/H6XTy0UcfBd2gqoVAFfNlhtlsnrSxjNxcZrk3nlFR8YfX6+WGG25g9+7dY7bLpVS1tbXKjyyMi+2+niwWPVntc2Nj46LGomWuvvpq+vr62L59+xghvuSSS/jhD3845r4lJSUkJiYiCAIbNmwYE48eHh7mww8/POrj0csBtc58mTFVpqbvlbNcFyrffuqppy7ySlVUAseePXvYsmULbW1tYxJCe3t7cblcrFmzZoIYwtiEUBhtfpKUlMSHH37IKaecsmDrlSSJH/zgB7zzzjvs2rWL8847b04etf7+/oCvbevWrfz9739XknDlSYAwOp753HPPpbCwkDPOOIO33nqLp59+mj//+c8A3HTTTXzzm9+koKCAFStWcPfdd5Oenq6eX4IA1TJfZozP1IRPMznVK2eVo5XJEkLlhK2lLqXyxW63c9FFF/F///d/bNu2jYKCgqDyqP3jH//A7XZzzjnnkJGRMeYnJyeHF154gaeeeor169fzu9/9jp///OfKRLIvfvGL/PKXv+SHP/whxx57LF1dXbz88ssTPBIqi4/6CSwzrrzySvbu3cu9995LWVkZP//5z9m1axdXXHEFMHrl/D//8z/84x//oLi4mCuuuEK9claZEn9x6GAqowJ47rnnePTRRydYr+3t7UFRSiUzWSx6ph41f7cHmmeffVYZejT+x2az8Y1vfIPi4mJGRkaoqKjg5ptvHvP4a6+9lvr6ehwOB++88w6ZmZkBX6PK7FHFfJmRmJjIa6+9xksvvaTUkf/rX/8iPT0dUK+cVWaHvzh0MJZRTZYQGiylVDKTxaJVj5rKgrM0SfQqC40oitL69evHtIFNSUmRgDE/zz//vHK72gb2s8Xu3bulE044QbLZbFJGRobyXQnGMipffEs1g6mU6vXXX5f0er30xhtvSLW1tWN+GhoapLCwMOmee+6RSktLpQceeEAym81KGemrr74qhYWFSX//+9+lw4cPSxdddJFUWFgoeb3egK9T5ehENdeOQpZD1q/K0nM0NCYKplKqqWLRXq9X9aipLCjqN+UoY8+ePZx88sls3bp1yqxf+UeeQqa2gV0Y7rzzzgk10J///OcB2L9/P+vXr8dkMpGbm8vf//73RV3bZHHoYCujmopgKqWaLhZ9yimncODAAZxOJyUlJZx99tljHq/GolXmgyrmRxnLKev3s0B7ezvf/OY3x3hD/vKXvzA4OMi5555LcnIyO3bs4Oabb+bSSy9l3759i7a2o6Ex0fXXX8+f/vQnHn30UQ4dOsQjjzzC008/rbTuVBNCVT4rqHXmRxnPPfec35O0b9bv1q1biYyM5Morr+TWW28NOmvraKK9vZ3Vq1dPeG+feeYZAP73f/8Xk8nEscceS1FREU888YRy21IRTGVU07Fx40ZeeOEF7rnnHn784x+TkpIyaSlVe3s7GzZsUN3XKkclqpgfZcwk63fLli0cOHCALVu2kJ6ezkknnQQsXtOKzxLt7e1+vSFFRUVs2rQJk8mkbNu0aRN33333Yi7PL8HemOi9994b8/83vvENvvGNb0x6/2uvvZZrr712gVelorK0qJennxE2bdrEwYMHueWWW1i7di1XXnkl11xzDS+99FLQWVuzoauri6997WuEhIRgtVq58847gyppr729nbfeeovc3FwSEhL42te+RktLy5Rx6aVGLaNSUVl+qGL+GSGYsn4DyWWXXUZpaSmvvPIKzz33HE8//TSPPvroUi9Lob29HbfbzZ/+9Cf++te/0tzczJVXXjllXHqpURsTqagsP1Qx/4wQTFm/gaK6uprXX3+dv/zlL5xxxhmcc845/PznP+fxxx9f6qUp7Nixg3/9619s2LCBjRs38vTTT/Pmm28iimLQekLUxkQqKssPNWb+GeH666/nC1/4wlE1QKGoqAibzcYxxxyjbNu0aRNXXnkl7e3tWK3WpVvcEZKSksbkMWRlZQFgMpmCyhMyPg4tl1FNhhqHVlEJLtRL6c8Ictbv0TRAwV/cOSEhAZPJFBSx59dee438/HyGhoaUbSUlJcCop+S///0voigqt8lxaRUVFZXZIkjBlC2kojIL7r33Xvbv38+//vWvMdujo6N5+eWXF3TE5UxwuVysXr2a7Oxs7r33Xtra2rjllltIS0vjxRdfJC8vj/POO4/vfve77Ny5k+uvv54PPviA9evXL+m6VVRUlh/Ba3apqEyDv3poCJ7Ys8Fg4PXXX0cQBDZu3Mjll1/OqlWrePbZZzGbzWzdupVDhw6xdu1a7rvvPv7whz+oQq6iojIn1Ji5yrLFXz10R0cHDocjaLLwMzMzeeWVV/zetnLlSrZv377IK1JRUTkaUS1zlWXLhg0bKC8vHyPob775Junp6X4btaioqKgcrahirrJsSUlJ4YILLmDz5s3s27ePt99+m9tuu40bbrhhqZemoqKisqioCXAqy5q+vj5uuOEG/vOf/2AwGLjqqqt48MEHgzoLX0VFRSXQqGKuoqKioqKyzFHNFxUVFRUVlWWOKuYqKioqKirLHFXMVVRUVFRUljmqmKuoqKioqCxzVDFXUVFRUVFZ5qhirqKioqKissxRxVxFRUVFRWWZo4q5ioqKiorKMkcVcxUVFRUVlWWOKuYqKioqKirLHFXMVVRUVFRUljmqmKuoqKioqCxzVDFXUVFRUVFZ5qhirqKioqKissxRxVxFRUVFRWWZo4q5ioqKiorKMkcVcxUVFRUVlWWOKuYqKioqKirLHFXMVVRUVFRUljmqmKuoqKioqCxzVDFXUVFRUVFZ5qhirqKioqKissxRxVxFRUVFRWWZo4q5ioqKiorKMkcVcxUVFRUVlWWOKuYqKioqKirLHFXMVVRUVFRUljmqmKuoqKioqCxzVDFXUVFRUVFZ5qhirqKioqKissxRxVxFRUVFRWWZo4q5ioqKiorKMkcVcxUVFRUVlWWOKuYqKioqKirLHFXMVVRUVFRUljmqmKuoqKioqCxzVDFXUVFRUVFZ5qhirqKioqKissxRxVxFRUVFRWWZo4q5ioqKiorKMkcVcxUVFRUVlWWOKuYqKioqKirLHFXMVVRUVFRUljmqmKuoqKioqCxzVDFXUVFRUVFZ5qhirqKioqKissxRxVxFRUVFRWWZo4q5ioqKiorKMkcVcxUVFRUVlWWOKuYqKioqKirLHFXMVVRUVFRUljmqmKuoqKioqCxzVDFXUVFRUVFZ5qhirqKioqKissxRxVxFRUVFRWWZo4q5ioqKiorKMkcVcxUVFRUVlWWOKuYqKioqKirLHFXMVVRUVFRUljmqmKuoqKioqCxzVDFXUVFRUVFZ5qhirqKioqKissxRxVxFRUVFRWWZ8/8B8K/ewpP5VOEAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 600x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x1 = np.random.randint(-150, 150, size = (300, 1))\n",
    "x2 = np.random.randint(0, 300, size = (300, 1))\n",
    "\n",
    "w = np.random.randint(1, 5, size = 2)\n",
    "b = np.random.randint(1, 10, size = 1)\n",
    "\n",
    "y = x1 * w[0] + x2 * w[1] + b + np.random.rand(300, 1)\n",
    "\n",
    "fig = plt.figure(figsize=(6, 6))\n",
    "ax = plt.subplot(111, projection = '3d')\n",
    "ax.scatter(x1, x2, y)\n",
    "ax.view_init(elev = 10, azim = -20)#调整视角\n",
    "\n",
    "#------------------------- 2 -------------------------------------\n",
    "\n",
    "X = np.concatenate([x1, x2, np.full(shape = (300, 1), fill_value = 1)], axis = 1)\n",
    "\n",
    "# 通过正规方程求解\n",
    "W = np.linalg.inv(X.T @ X).dot(X.T).dot(y).round(2)\n",
    "\n",
    "print('真实斜率和截距为', w, b)\n",
    "print('计算的结果是', W.flatten())\n",
    "\n",
    "x1 = np.array([[-150], [150]])\n",
    "x2 = np.array([[0], [300]])\n",
    "ax.plot(x1, x2, x1 * W[0] + x2 * W[1] + W[2], color = 'red')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "580b5c2d-16b3-49bd-887a-57ff5be9d1d8",
   "metadata": {},
   "source": [
    "### 使用 sklearn 进行求解"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "3e41257d-02f0-49f7-b0ba-42bb78086d19",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "1999030d-6c79-4fd6-b4f0-fcbe6c63a32b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "真实斜率和截距为 [3] [3]\n",
      "计算的结果是 [[3.0656547]] [2.80039536]\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "X = np.linspace(0, 10, num = 30).reshape(30, 1) # 等差数列\n",
    "w = np.random.randint(1, 5, size = 1) # 随机斜率\n",
    "b = np.random.randint(1, 10, size = 1) # 随机截距\n",
    "noise = np.random.randn(30, 1) # # 噪声\n",
    "y = (X * w + noise) + b #计算真实值。添加噪声，模拟真实值\n",
    "# y(30, 1) = X(30, 1) · w(1, 1) + b(1, 1)\n",
    "\n",
    "#根据样本数据绘制散点图\n",
    "plt.scatter(X, y)\n",
    "#---------------------- 2 -------------------------------------\n",
    "\n",
    "reg = LinearRegression(fit_intercept=True)\n",
    "reg.fit(X, y)\n",
    "\n",
    "print('真实斜率和截距为', w, b)\n",
    "print('计算的结果是', reg.coef_, reg.intercept_)\n",
    "print()\n",
    "\n",
    "# 根据计算出的 w 和 b 绘制“模型”\n",
    "x_t = np.array([0, 10])\n",
    "_ = plt.plot(x_t, x_t * reg.coef_[0][0] + reg.intercept_[0], color = 'red')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "e725f5a9-1a38-4abe-907b-73d4c3ce1cbd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "真实斜率和截距为 [1 2] [2]\n",
      "计算的结果是 [[1.00002619 2.00004193]] [2.49031856]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[<mpl_toolkits.mplot3d.art3d.Line3D at 0x7f6993aedde0>]"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 600x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x1 = np.random.randint(-150, 150, size = (300, 1))\n",
    "x2 = np.random.randint(0, 300, size = (300, 1))\n",
    "\n",
    "w = np.random.randint(1, 5, size = 2)\n",
    "b = np.random.randint(1, 10, size = 1)\n",
    "\n",
    "y = x1 * w[0] + x2 * w[1] + b + np.random.rand(300, 1)\n",
    "\n",
    "fig = plt.figure(figsize=(6, 6))\n",
    "ax = plt.subplot(111, projection = '3d')\n",
    "ax.scatter(x1, x2, y)\n",
    "ax.view_init(elev = 10, azim = -20)#调整视角\n",
    "\n",
    "#------------------------- 2 -------------------------------------\n",
    "\n",
    "reg = LinearRegression()\n",
    "reg.fit(np.concatenate([x1, x2], axis = 1), y)\n",
    "\n",
    "print('真实斜率和截距为', w, b)\n",
    "print('计算的结果是', reg.coef_, reg.intercept_)\n",
    "\n",
    "x1 = np.array([[-150], [150]])\n",
    "x2 = np.array([[0], [300]])\n",
    "ax.plot(x1, x2, x1 * reg.coef_[0][0] + x2 * reg.coef_[0][1] + reg.intercept_[0], color = 'red')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "188db232-a243-4f86-a4cb-cfd5f5811962",
   "metadata": {},
   "source": [
    "## 习题"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3b1443f9-b048-4789-9796-3a03854650fd",
   "metadata": {
    "jp-MarkdownHeadingCollapsed": true
   },
   "source": [
    "### No.1\n",
    "\n",
    "- 气温会随着海拔高度的升高而降低,，我们可以通过测量不同海拔高度的气温来预测海拔高度和气温的关系。\n",
    "- 我们假设海拔高度和气温的关系可以使用如下公式表达: $y(气温) = w * x(海拔) + b$\n",
    "- 理论上来讲，确定以上公式 w 和 b的值只需在两个不同高度测试，就可以算出来 w 和 b 的值了。但是由于所有的设备都是有误差的，而使用更多的高度测试的值可以使得预测的值更加准确。\n",
    "- 我们提供了在9个不同高度测量的气温值，请你根据今天学习的线性回归（正轨方程）方法预测 w 和 b 的值。根据这个公式, 我们预测一下在8000米的海拔, 气温会是多少？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "f8408007-a5a5-4474-a896-284eb466314d",
   "metadata": {},
   "outputs": [],
   "source": [
    "data = np.array([[0.0, 12.834044],\n",
    "            [500.0, 10.190649],\n",
    "            [1000.0, 5.500229],\n",
    "            [1500.0, 2.854665],\n",
    "            [2000.0, -0.706488],\n",
    "            [2500.0, -4.065323],\n",
    "            [3000.0, -7.127480],\n",
    "            [3500.0, -10.058879],\n",
    "            [4000.0, -13.206465]])\n",
    "\n",
    "altitude = data[:, 0]\n",
    "temperature = data[:, 1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "c072df65-1adc-4f33-93a3-07b61c6b33cb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[-0.00656953]] [12.71850751]\n",
      "预测 8000 米海拔的气温为: -39.837766088888884\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAGdCAYAAAA8F1jjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABCcUlEQVR4nO3deVyVZd7H8c8BhYMKmKaAiWvm5DIgKe5amZOkZpqllaPptGlTWpNPajlmOVm2mS2WNlZmmy1TYbk1WrlALuD2WPZkqKS4pQEqoHKu549rZCTQXODc5xy+79frvMZz3wf6XXOE8/W+rvt3uYwxBhEREREfFOR0ASIiIiKnoqAiIiIiPktBRURERHyWgoqIiIj4LAUVERER8VkKKiIiIuKzFFRERETEZymoiIiIiM+q5HQB58vj8bBr1y7Cw8NxuVxOlyMiIiJnwBhDbm4uderUISjo1NdN/D6o7Nq1i9jYWKfLEBERkXOQmZlJ3bp1T3ne74NKeHg4YAcaERHhcDUiIiJyJnJycoiNjS36HD8Vvw8qJ6Z7IiIiFFRERET8zO8t29BiWhEREfFZCioiIiLisxRURERExGcpqIiIiIjPUlARERERn6WgIiIiIj5LQUVERER8loKKiIiI+Cy/b/hWXgo9hlUZB9ibm0/tcDeJDWsQHKS9hERERLxJQaUUCzZlMTF5M1nZ+UXHYiLdTOjdjB4tYhysTEREpGLR1M9vLNiUxfA5acVCCsDu7HyGz0ljwaYshyoTERGpeBRUTlLoMUxM3owp5dyJYxOTN1PoKe0VIiIiUtYUVE6yKuNAiSspJzNAVnY+qzIOeK8oERGRCkxB5SR7c/8bUlzGQ6eM9N99nYiIiJQfBZWT1A53F/35L6s/Yc7c8Tz1+VTCjuaf8nUiIiJSfhRUTpLYsAYxkW5cQEjhcQpdQdyw6Us+m30fTfdtw4W9+yexYQ2nSxUREakQFFROEhzkYkLvZgBMb38jtwycxJ5qNWjySyafzr6fgesWMKHXpeqnIiIi4iUKKr/Ro0UM0wclEB3pJrXeH0ka+gJfNbwM9/GjTF74Ij0e/xvk5DhdpoiISIXgMsb49b22OTk5REZGkp2dTURERJl932KdaauG0PbjWQQ99BAUFkLjxjB3LiQklNl/T0REpCI5089vBZWzkZICAwfCjh0QEgJPPw1//Su4NBUkIiJyNs7081tTP2ejfXtIT4frroOjR+Hee6FfPzh40OnKREREApKCytmqUQM+/himTbNXVT75BFq1gtRUpysTEREJOAoq58LlgnvugZUr7XqV7duhc2d46inweJyuTkREJGAoqJyPyy6DtDQYMACOH4f/+R/o1Qv27XO6MhERkYCgoHK+IiLg3Xdhxgxwu2H+fIiPh6+/droyERERv6egUhZcLrj9dli1Ci69FHbtgiuvhMces7czi4iIyDlRUClLLVvC6tUwdKhdq/L3v8Of/gRZWU5XJiIi4pcUVMpa1aowaxbMnm3/vGQJxMXBokVOVyYiIuJ3FFTKy5//DGvXwh//aBfXXn01jBtnF92KiIjIGVFQKU9Nm9r+KsOH2+eTJ8Pll0NmpqNliYiI+AsFlfIWFgYvv2z3BoqIgBUr7F1ByclOVyYiIuLzFFS85YYbbPv91q3hwAG49lq4/37bil9ERERKpaDiTY0a2Ssq991nnz/3HHTsCD/95GxdIiIiPkpBxdtCQuDZZ+HTT+GCC2DNGrtX0AcfOF2ZiIiIz1FQccq118K6ddChA+TkwI03wogRkJ/vdGUiIiI+Q0HFSfXqwVdfwdix9vn06dC2LWzZ4mhZIiIivkJBxWmVK8Pjj8OCBVCrFmzYYDc7fOstpysTERFxnIKKr7j6ali/Hq64Ag4fhsGDbSv+w4edrkxERMQxCiq+JCYGFi+GiRMhKAjeeAPatIGNG52uTERExBEKKr4mONhuZvjvf9vg8t13kJgIM2eCMU5XJyIi4lUKKr7q8svtVFBSkr0T6I474Oab7R1CIiIiFYSCii+rVQvmzYMpU6BSJXjvPUhIgLQ0pysTERHxCgUVXxcUBKNHwzff2NuZt26F9u3hhRfOayqo0GNI2foLn67bScrWXyj0aFpJRER8j8sY/174kJOTQ2RkJNnZ2URERDhdTvk6eBCGDYNPPrHPr7sOZs2yHW7PwoJNWUxM3kxW9n+by8VEupnQuxk9WsSUXb0iIiKncKaf3169omKMoV27drz44otFxxYvXkyLFi1wu93ExcWxdOlSb5bkXy64AD7+GKZNs634P/nE7sScknLG32LBpiyGz0krFlIAdmfnM3xOGgs2ZZVtzSIiIufBa0GlsLCQu+++m2+//bbo2Pbt2+nTpw+dOnXi22+/pW/fvlx77bXs3LnTW2X5H5cL7rkHVq6Exo1hxw7o3NmuY/F4TvulhR7DxOTNlHYJ7cSxicmbNQ0kIiI+wytBZdWqVXTq1In58+fTsGHDouOvvfYaTZs2Zfr06cTFxfHII4+QkJDArFmzvFGWf7vsMruoduBAKCyEBx+Enj1h375TfsmqjAMlrqSczABZ2fmsyjhQDgWLiIicPa8ElalTp5KYmEh6ejr16tUrOp6amsp1112Hy+UqOpaUlMTKlSu9UZb/i4iAd96xPVbcbtuGPz4evv661JfvzT2zDQ/P9HUiIiLlzStB5c033+T555+nevXqxY7v3LmTBg0aFDvWsGFDMjMzvVFWYHC54LbbYNUquPRS2LULrrwSHn3UXmk5Se1w9xl9yzN9nYiISHnzSlCpXLlyqccLCgpKhJewsDDy8vJO+b0KCgrIyckp9hCgZUtYvdruD+TxwIQJ0L07ZP13cWxiwxrERLpxneJbuLB3/yQ2rOGVkkVERH6Po31UwsLCOHr0aLFjeXl5hIWFnfJrJk+eTGRkZNEjNja2vMv0H1Wr2tuVZ8+2f166FOLiYNEiAIKDXEzo3QygRFg58XxC72YEB50qyoiIiHiXo0GlXr16bNu2rdix7du3U7du3VN+zdixY8nOzi56aJqoFH/+M6xdC3/8o11ce/XVMG4cHD9OjxYxTB+UQHRk8emd6Eg30wclqI+KiIj4lEpO/sc7duzI/PnzGT16dNGxhQsX0rlz51N+TWhoKKGhod4oz781bQqpqfC3v8H06TB5su1u++679GgRS/dm0azKOMDe3Hxqh9vpHl1JERERX+PoFZVhw4axZs0aHnvsMb7//nsmT55MSkoKQ4cOdbKswBEWBi+/DHPn2juEVqywdwUlJxMc5KJ945r0ib+I9o1rKqSIiIhPcjSoxMTE8Pnnn/Pxxx8TFxfHW2+9xb/+9S/q16/vZFmB54YbID0dWreGAwfg2mvh/vvhN+uDREREfI32+qlIjh6FMWPguefs89at4f33oVEjZ+sSEZEKxyf3+hGHhYTAs8/CZ59BjRqwZg20agUffOB0ZSIiIqVSUKmIeveGdeugY0fIyYEbb4QRIyBfHWlFRMS3KKhUVLGx8NVX9rZll8veGdS2LWzZ4nRlIiIiRRRUKrJKleAf/7B7BNWuDRs22M0O33rL6cpEREQABRUB+NOf7FTQlVfC4cMweLBtxX/4sNOViYhIBaegIlZMjG21/+ijEBQEb7xh7wrauNHpykREpAJTUJH/Cg6G8eNhyRKoUwe+/x4SE2HmTPDvu9hFRMRPKahISV272qmgpCR7J9Add8DNN9s7hERERLxIQUVKV6sWzJsHU6bYRbfvvQcJCXazQxERES9RUJFTCwqC0aPtZob16sHWrdC+PUybpqkgERHxCgUV+X3t29upoOuug2PHYORI6NfP7hskIiJSjhRU5MxccAF8/LG9mhISAp98Ytvvp6Q4XZmIiAQwBRU5cy4X3HMPrFwJjRvDjh3QubNdx+LxOF2diIgEIAUVOXuXXQZpaTBwIBQWwoMPQs+esG+f05WJiEiAUVCRcxMRAe+8Y3usuN22DX98PHz9tdOViYhIAFFQkXPncsFtt8GqVXDppbBrl23D/+ij9kqLiIjIeVJQkfPXsiWsXm33B/J4YMIE6N4dsrKcrkxERPycgoqUjapVYdYsu/Ny1aqwdCnExdn9g0RERM6RgoqUrUGDbPfauDi7uPbqq2HcODh+3OnKRETEDymoSNlr2hRSU2HECPt88mS7f9COHc7WJSIifkdBRcqH2w0vvQQffGDvEFq50t4V9NlnTlcmIiJ+REFFylf//pCeDm3awMGD0KcP3HcfHD3qdGUiIuIHFFSk/DVqBMuXw/332+dTp0LHjnaTQxERkdNQUBHvCAmBZ56xUz81asCaNZCQAHPnOl2ZiIj4MAUV8a7eve1OzB07Qk4ODBgAw4dDXp7TlYmIiA9SUBHvi42Fr76yty27XPDKK9CuHXz/vdOViYiIj1FQEWdUqgT/+IfdI6h2bdiwAVq3tg3jRERE/kNBRZz1pz/ZqaArr4TDh2HwYNuK//BhpysTEREfoKAizouJsa32H30UgoLgjTfs1ZWNG52uTEREHKagIr4hOBjGj4clS6BOHbteJTERZs4EY5yuTkREHKKgIr6la1c7FZSUBPn5cMcdcPPN9g4hERGpcBRUxPfUqgXz5sFTT9lFt++9Z3uurF3rdGUiIuJlCirim4KC4IEHYNkyqF/fdrFt3x6mTdNUkIhIBaKgIr6tXTu7V1DfvnDsGIwcCf36wYEDTlcmIiJeoKAivu+CC+Cjj+CFF2wr/k8+gVatICXF6cpERKScKaiIf3C54K9/teHk4othxw7o3BmmTAGPx+nqRESknCioiH85sah24EAoLIQHH4SePWHfPqcrExGRcqCgIv4nIgLeecf2WHG7bRv+uDi7f5CIiAQUBRXxTy4X3HYbrF4Nl14KWVnQrRtMnGivtIiISEBQUBH/1qKFDStDh9q1Ko88At27w65dTlcmIiJlQEFF/F/VqjBrlt15uWpVWLoU4uNh4UKnKxMRkfOkoCKBY9Agu9A2Ls4uru3RA8aOtf1XRETELymoSGBp2hRSU2HECPv8iSfg8svt7cwiIuJ3FFQk8Ljd8NJL8MEH9g6hlSvtVNBnnzldmYiInCUFFQlc/fvb9vtt2sDBg9CnD9x3Hxw96nRlIiJyhhRUJLA1agTLl8P999vnU6dCx452k0MREfF5CioSkAo9hpStv/Dpup2kZOZS+NTTduqnRg1Ys8Z2uJ071+kyRUTkd1RyugCRsrZgUxYTkzeTlZ1fdCwm0s2E3q3psW4d3HyzvcoyYIC9lfnZZyEszLmCRUTklHRFRQLKgk1ZDJ+TViykAOzOzmf4nDQWZFey4eShh2x321degXbt4PvvHapYREROR0FFAkahxzAxeTOmlHMnjk1M3kxhUDBMmmQbwtWuDRs2QOvWtmGciIj4FAUVCRirMg6UuJJyMgNkZeezKuOAPdC9O6xfD1deCYcPw+DBthX/4cPeKVhERH6XgooEjL25pw4pp3xddDQsWgSPPQZBQfDGG/bqysaN5VOkiIicFZ8IKuPHj8flchV7XHXVVU6XJX6mdrj73F4XHAwPP2zXrtSpY9erJCbCjBlgSptIEhERb/GJoLJnzx5uuukmMjIyih5vv/2202WJn0lsWIOYSDeuU5x3Ye/+SWxYo/QXdOkC69ZBUhLk58Odd8JNN0FOTjlVLCIiv8dngkrjxo1p0KBB0SMqKsrpssTPBAe5mNC7GUCJsHLi+YTezQgOOlWUAWrVgnnz4KmnoFIleP9923Nl7dpyqVlERE7PZ4JKdHS002VIAOjRIobpgxKIjiw+vRMd6Wb6oAR6tIj5/W8SFAQPPADLlkH9+raLbfv2MG2apoJERLzMZYzzv3kbNmxIfHw8//u//0tOTg6dOnVi2rRp1KlTp8RrCwoKKCgoKHqek5NDbGws2dnZREREeLNs8WGFHsOqjAPszc2ndrid7jntlZRTOXgQ/vIX+Ne/7PM+fWDWLNvhVkREzllOTg6RkZG/+/ntM1dUjh07xhtvvMG7777Lzp07GTZsWKmvnTx5MpGRkUWP2NhYL1cr/iA4yEX7xjXpE38R7RvXPLeQAnDBBfDRR/DCCxASAp9+Cq1aQUpK2RYsIiKl8okrKunp6bRo0YLKlSsDsGnTJlq2bMmhQ4eoWrVqsdfqioo4Ji3Ntt3/8Ud7p9A//gGjR9upIhEROSt+dUWlTp06RSEFoHHjxgDs3r27xGtDQ0OJiIgo9hDxihOLagcOhMJCGDMGrrkG9u51ujIRkYDleFD5/PPP+cMf/sChQ4eKjm3evBlAC2zF90REwDvvwMyZ4HbbNvzx8fDVV05XJiISkBwPKt27dycqKoqBAweSnp7O/PnzGTJkCElJSSWmfUR8gssFt90Gq1fDpZdCVhZ06wYTJ9orLSIiUmYcDyohISF88cUXuFwurrjiCm699VZatmzJrFmznC5N5PRatLBhZdgw8HjgkUfs/kG7djldmYhIwPCJxbTn40wX44iUqzlz4K677IaGtWrZnZivvtrpqkREfJZfLaYV8XuDBtm7guLiYN8+6NEDxo6FY8ecrkxExK8pqIiUlUsugdRUGDHCPn/iCbj8ctixw9GyRET8mYKKSFlyu+Gll+CDD+wdQitX2ruCPvvM6cpERPySgopIeejfH9LToU0b24a/Tx+47z44etTpykRE/IqCikh5adQIli+H+++3z6dOhY4d7SaHIiJyRhRURMpTSAg88wwkJ9uNDNessXsFzZ3rdGUiIn5BQUXEG3r1gnXroFMnyM21ewbddRfk5TldmYiIT1NQEfGW2FhYuhQeesh2t331VWjbFr7/3unKRER8loKKiDdVqgSTJtk9gmrXho0b4bLLYPZspysTEfFJCioiTujeHdavhyuvhCNHYMgQuPVWOGlzThERUVARcU50NCxaBI89BkFB8Oab9nbmDRucrkxExGcoqIg4KTgYHn7Yrl2pU8euV2nbFmbMAP/ehktEpEwoqIj4gi5d7F1BSUmQnw933gk33QQ5OU5XJiLiKAUVEV9RqxbMmwdPPWUX3b7/PiQkwNq1TlcmIuIYBRURXxIUBA88YDva1q9vu9i2bw/TpmkqSEQqJAUVEV/Utq3dK6hfPzh2DEaOhL594cABpysTEfEqBRURX3XBBfDhh/Dii7YV/6ef2vb7KSkAFHoMKVt/4dN1O0nZ+guFHl1xEZHAU8npAkTkNFwuuPtu6NABbrwRfvwROndmyz0PMvTCy9mV+9/dmGMi3Uzo3YweLWIcLFhEpGzpioqIP2jVCtLS7J1AhYU0nfo4k/85hpqHfy16ye7sfIbPSWPBpizn6hQRKWMKKiL+Ijycwrfm8Hi/v5FXKZSuGWl88ca9tNthG8SdmPiZmLxZ00AiEjAUVET8yKptB5nR5Ar6DH6GH2rWI+rQAd5+72FGLn+HIE8hBsjKzmdVhhbdikhgUFAR8SN7c/MB+KFWA/oMfpb3W3Yn2Hi4b8U7zHl/PLVzfyn2OhERf6egIuJHaoe7i/6cF+LmwWtGMqrX3zhc2U2HHRv44o176fLT2mKvExHxZwoqIn4ksWENYiLduE469knzK+h16/Nsrt2QC49kM/uDCbSdMcX2XxER8XMKKiJ+JDjIxYTezQCKhZWMGhfR98/P8FarngAETZkCXbvCjh0OVCkiUnYUVET8TI8WMUwflEB0ZPHpnRo1I6g1eyZ88AFERNjGcPHxtlGciIifchnj3xuI5OTkEBkZSXZ2NhEREU6XI+I1hR7DqowD7M3Np3a4m8SGNQgO+s91lp9+goEDYfVq+3zkSHjySQgNda5gEZGTnOnnt4KKSKA6ehTGjoVnn7XPL7vM7sjcuLGzdYmIcOaf35r6EQlUISHwzDOQnAw1asDatbbD7dy5TlcmInLGFFREAl2vXrBuHXTqBLm5MGAA3HUX5OU5XZmIyO9SUBGpCGJjYelSeOghu9Hhq69C27bw/fdOVyYicloKKiIVRaVKMGkSLFwItWvDxo123crs2U5XJiJySgoqIhVN9+6wfj106wZHjsCQIXDrrXDokNOViYiUoKAiUhFFR9srK5MmQVAQvPkmtGkDGzY4XZmISDEKKiIVVXCwXbOydClcdJFdr9K2LcyYAf7dtUBEAoiCikhF16WLvSvommsgPx/uvBNuuglycpyuTEREQUVEgAsvtP1Wnn7aLrp9/31ISLC9V0REHKSgIiJWUBD87W+wfDnUrw9bt0L79vD885oKEhHHKKiISHFt20J6OvTrB8eOwahRcN11cOCA05WJSAWkoCIiJV1wAXz4Ibz4om3F/9lndifmlSudrkxEKhgFFREpncsFd98Nqalw8cWQmWkX3j75JHg8TlcnIhWEgoqInF6rVpCWZu8EKiyEMWPsHUJ79zpdmYhUAAoqIvL7wsPh7bfhtdcgLMw2i4uPh6++croyEQlwCioicmZcLvjLX2DVKmjWDLKybBv+iRPtlRYRkXKgoCIiZ6dFCxtWhg2za1UeeQSuugp27XK6MhEJQAoqInL2qlaFf/4T5syBatXsFFB8vJ0SEhEpQwoqInLubrnFdq+Nj4d9+6BHD7vY9tgxpysTkQChoCIi5+eSSyAlxd7KDPb25a5dYccOZ+sSkYCgoCIi58/tts3hPvwQIiNtcImPh08/dboyEfFzCioiUnauv962309MhIMHbev9UaOgoMDpykTETymoiEjZatgQli2zGxyC3dSwY0e7yaGIyFlSUBGRshcSAk8/DcnJUKOGXXDbqhXMnet0ZSLiZ3wiqOzfv5/+/ftTtWpVoqKiGD9+PEbbyov4v169YP166NQJcnNhwAC46y7Iy3O6MhHxEz4RVIYMGcJ3331HcnIyb775JjNnzuT55593uiwRKQt168LSpfDQQ7a77auvQtu28P33TlcmIn7AZRy+dLF161Yuvvhi0tPTiY+PB+D1119n0qRJbD2DOe2cnBwiIyPJzs4mIiKinKsVkfOyeDEMGmQ3NKxSBV5+GYYMcboqEXHAmX5+O35FJTU1lQYNGhSFFICkpCR++ukn9uzZ41xhIlL2une3U0HdusGRI3DrrTaoHDrkdGUi4qMcDyo7d+6kQYMGxY5FR0fjdrvJzMws8fqCggJycnKKPUTEj0RH21b7kyZBUBDMng2tW8OGDU5XJiI+yPGgUlBQQPXq1UscDwsLI6+UBXeTJ08mMjKy6BEbG+uFKkWkTAUH2zUrS5fCRRfBli2298qrr4IW0ovISRwPKmFhYRw9erTE8by8PMLCwkocHzt2LNnZ2UWP0q66iIif6NIF1q2Da66xTeHuugsGDoTsbKcrExEf4XhQqVevHtu2bSt2bO/eveTn51O3bt0Srw8NDSUiIqLYQ0T82IUX2n4rTz8NlSrZXisJCbBmjdOViYgPcDyodOjQgS1bthQLKwsXLqR+/fpER0c7V5iIeE9QkO1ku3w5NGgAP/0EHTrYrraaChKp0BwPKnXr1qVv374MHjyYtWvX8u9//5sxY8Zw94mdWEWk4mjb1u4V1K8fHDsGo0aRdUUPVq/9kUKPAotIReR4UAGYOXMmsbGxXH755dx4443ccsst/O3EPiEiUrFUr86CR17gqWvvoSC4EjFfL6LOFR0YPuIFFmzKcro6EfEyxxu+nS81fBMJLAs2ZTF8ThoGaL5nKy98+iSNDu7iuCuIp7sMJn7aJHr88SKnyxSR8+Q3Dd9ERE4o9BgmJm/mxL+e/jeqMb2HTOWTZl2pZDyM+foNqve/jsLdagYpUlEoqIiIz1iVcYCs7Pxixw6HVmFUrwcYnXQveZVCafd/ayiMi4OvvnKmSBHxKgUVEfEZe3PzSz/hcvHBH//EtYOf5Yea9QjZu8e24Z84EQoLvVukiHiVgoqI+Iza4e7Tnv+/WvW5dsiz7LnhFvB44JFH4KqrYNcu7xQoIl6noCIiPiOxYQ1iIt24TnHeBVxwYXUufO8tmDMHqlWzU0Dx8Xb/IBEJOAoqIuIzgoNcTOjdDKBEWDnxfELvZgQHueCWW2DtWhtS9u2DHj1gzBjbf0VEAoaCioj4lB4tYpg+KIHoyOLTQNGRbqYPSqBHi5j/HrzkEkhJgRMNIp98Erp2he3bvVixiJQn9VEREZ9U6DGsyjjA3tx8aoe7SWxYw15JOZWPPoK//MVuaHjBBfD669Cnj/cKFpGzcqaf3woqIhI4MjLs7surVtnnI0faqyyhoc7WJSIlqOGbiFQ8DRvCsmV2g0Owmxp26AA//uhsXSJyzhRURCSwhITA009DcjLUqAFpaZCQAO+/73RlInIOFFREJDD16gXr10OnTpCba6eE7rwT8vKcrkxEzoKCiogErrp1YelSePhhcLlgxgxo2xa++87pykTkDCmoiEhgq1QJHnsMFi2CqCjYuBFat4Y333S6MhE5AwoqIlIxXHUVrFtn9wg6cgRuvRWGDIFDh5yuTEROQ0FFRCqO6Gjban/SJAgKgtmz7dWVDRucrkxETkFBRUQqluBgeOghu0fQRRfBli2QmAivvgr+3VZKJCApqIhIxdS5s50K6tkTCgrgrrvsnUHZ2U5XJiInUVARkYrrwgvhs89s35VKlWDuXNtzZc0apysTkf9QUBGRii0oyHayXb4cGjSAn36y3Wyff15TQSI+QEFFRARsf5X0dOjXD44dg1Gj4Lrr4MABpysTqdAUVERETqheHT78EF56ybbi/+wziI+HlSudrkykwlJQERE5mcsFI0ZAaio0aQKZmdClCzzxBHg8TlcnUuEoqIiIlKZVK1i7Fm6+GQoLYexYSEqCvXudrkykQlFQERE5lfBwmDMH/vlPCAuzbfjj4uz+QSLiFQoqIiKn43LBsGGwejU0awa7d9s2/I88Yq+0iEi5UlARETkTzZvbsPKXv9jblidOtPsH7drldGUiAU1BRUTkTFWpAq+9Bm+/DdWq2Tb8cXGwYIHTlYkELAUVEZGzdfPNkJZmb13ev98ush0zxvZfEZEypaAiInIumjSBlBT461/t8yefhK5dYft2Z+sSCTAKKiIi58rthhdegI8+gshIG1xatYJPP3W6MpGAoaAiInK++vWz7fcTE+HgQdt6f9QouyuziJwXBRURkbLQsCEsWwYPPGCfP/+83dzwxx+drUvEzymoiIiUlZAQeOopmDcPata0C24TEuD9952uTMRvKaiIiJS1nj1h3Tro3Blyc2HgQLjzTsjLc7oyEb+joCIiUh7q1oUlS+Dhh2132xkzoG1b+O47pysT8SsKKiIi5aVSJXjsMbtHUFQUbNwIrVvDm286XZmI31BQEREpb1ddZaeCunWDI0fg1lthyBA4dMjpykR8noKKiIg3REfDwoUwaRIEBcHs2fbqyoYNTlcm4tMUVEREvCU4GB56yO4RdNFFsGWL7b3yyit2o0MRKUFBRUTE2zp3pjAtnYNXdLdN4YYPx3PjAMjOdroyEZ+joCIi4mULNmXR6Z8bSGhzD5OuGMaxoGCCPvyAIy3iYPVqp8sT8SkKKiIiXrRgUxbD56SRlZ2PcQXxWmI/brhlCpmRUVT5eTueDh1h6lRNBYn8h4KKiIiXFHoME5M389sIsq5OU3re+jzzL+lA0PFjcN99dr+gAwecKFPEpyioiIh4yaqMA2Rl55d6LsddjeHXjeXh7sPxVA6Bzz6D+HhYscK7RYr4GAUVEREv2Ztbekgp4nIxJ6EnX7+VDE2aQGYmdO0KTzwBHo93ihTxMQoqIiJeUjvcfUavc7e+DNauhVtugcJCGDsWkpJg795yrlDE9yioiIh4SWLDGsREunGd4rwLiIl0k9iwBoSHw1tvwaxZEBZm2/DHxcHSpd4sWcRxCioiIl4SHORiQu9mACXCyonnE3o3IzjoP89cLhg61N6y3Lw57N5t2/A/8oi90iJSASioiIh4UY8WMUwflEB0ZPFpoOhIN9MHJdCjRUzJL2reHFatgttus7ctT5xo9w/atctLVYs4x2WMf9+sn5OTQ2RkJNnZ2URERDhdjojIGSn0GFZlHGBvbj61w+10T9GVlNN55x248067oeGFF9rpoR49yr9gkTJ2pp/fPnFF5c9//jMul6vY47bbbnO6LBGRchMc5KJ945r0ib+I9o1rnllIAbj5ZkhLs7cu799vF9mOGQPHjpVrvSJO8YmgsmfPHkaPHk1GRkbR48knn3S6LBER39SkCaSkwF//ap8/+aS9jXn7dmfrEikHPhNUmjZtSoMGDYoeNWvWdLosERHf5XbDCy/ARx9BZKQNLq1awaefOl2ZSJnymaASHR3tdBkiIv6nXz9IT4fERDh40LbeHzXK7sosEgAcDyoej4f9+/czZ84c6tevT2xsLLfddhvZ2u5cROTMNGwIy5bBAw/Y588/Dx06wI8/OluXSBlwPKjs37+fwsJC3G43H374Ia+++irLly/nwQcfLPX1BQUF5OTkFHuIiFR4ISHw1FMwbx7UrGkX3CYkwHvvOV2ZyHlx/PbkwsJC1q9fT0JCQtGxefPmMWzYMPaW0i76kUceYeLEiSWO6/ZkEZH/+Plne3fQsmX2+R13wNSptsOtiI/wm9uTXS4XsbGxxY41btyYffv2cfz48RKvHzt2LNnZ2UWPzMxMb5UqIuIf6taFJUvg4Ydtd9sZM+walu++c7oykbPmeFCZPn06nTt3pvCkdtCbN2+mVq1aVKpUqcTrQ0NDiYiIKPYQEZHfqFQJHnvM7hEUFQWbNkHr1vDmm05XJnJWHA8qN954IwcOHOD2229n48aNfPjhh4waNYr+/fs7XZqIiP+76ipYv97+75EjcOutMHiw7Wwr4gccDyq1atVi4cKF/PTTT3To0IFRo0bRq1cvNXwTESkrUVGwcCH84x8QFGTb7rdubQOMiI9zfDHt+dJePyIiZ2HZMrjpJti5E0JD7SLbO++0a1lEvMhvFtOKiIgXde4M69ZBz562Kdzw4TBgAKh3lfgoBRURkYrmwgshORmeecYuuv3gA9tzZfVqpysTKUFBRUSkInK54P77YcUKaNAAfvoJOna0U0H+vSJAAoyCiohIRZaYaPcKuv56OHYM7rvP7hd04IDTlYkACioiIlK9up3+eekl24r/s88gPt5ebRFxmIKKiIjYqaARI+Dbb6FJE8jMhK5d4YknwONxujqpwBRURETkv+LjYe1auOUWKCyEsWMhKQlK2XtNxBsUVEREpLjwcNsUbtYsu5HhokUQFwdLlzpdmVRACioiIlKSywVDh9pblps3h927oVs3mDDBXmkR8RIFFRERObXmzWHVKrjtNnvb8qOP2sCyc6fTlUkFoaAiIiKnV6UKzJwJb78N1arB11/btSzz5ztdmVQACioiInJmbr4Z0tKgVSvYvx+uuQYefND2XxEpJwoqIiJy5po0gZQUuOce+3zKFOjSBbZvd7YuCVgKKiIicnZCQ2HaNPjoI9ssLjXVTgV98onDhUkgUlAREZFz06+fbb/fti38+iv07QsjR9pdmUXKiIKKiIicuwYNYNkyGD3aPp82DTp0gB9/dLQsCRwKKiIicn4qV7ZrVT7/HGrWtAtuExLwvPMuKVt/4dN1O0nZ+guFHu3KLGevktMFiIhIgLjmGli3zt4dtGwZQbfcTEZcDyZ2u52CyqHERLqZ0LsZPVrEOF2p+BFdURERkbJTty4Lp73NtA4D8eDi5vUL+HT2/TTen8nu7HyGz0ljwaYsp6sUP6KgIiIiZabQY3hk/g8823kQgwY8xr6q1fnD/u0kzx5Fv43/BmBi8mZNA8kZU1AREZEysyrjAFnZ+QCsbBBP0tAXWFY/nirHCnjmi+d4et4zZO87yKqMAw5XKv5CQUVERMrM3tz8Ys/3V72AwQMeZUqXwRS6grj+f5eS/OZ95K9Jc6hC8TcKKiIiUmZqh7tLHDOuIF5ufyMDb3qcrGo1aXzgZ7oO7g2vvGI3OhQ5DQUVEREpM4kNaxAT6cZVyrnVsS3oOXQaK5q2JehoAQwfDgMGQHa21+sU/6GgIiIiZSY4yMWE3s0ASoQVF3CwSiS5H3wMzzwDlSrBBx9AQgKsXu31WsU/KKiIiEiZ6tEihumDEoiOLD4NFB3pZvqgBHq0rAP33w8rVtjOtj/9BB07wnPPaSpISnAZ499/K3JycoiMjCQ7O5uIiAinyxERkf8o9BhWZRxgb24+tcPdJDasQXDQb66z/Por3Hab3eAQoHdveP112+FWAtqZfn4rqIiIiLOMgenT7VWWggKoWxfee89eZZGAdaaf35r6ERERZ7lcMGIEpKbCJZfAzz9D164weTJ4PE5XJw5TUBEREd8QHw9r1sAtt0BhIYwbB0lJsGeP05WJgxRURETEd4SHw1tvwaxZEBYGixbZALNkidOViUMUVERExLe4XDB0qL260rw57N4NV10FEybYKy1SoSioiIiIb2rWDFatsncFGQOPPgrdusHOnU5XJl6koCIiIr6rShWYORPefhuqVYOvv7ZTQfPnO12ZeImCioiI+L6bb4a0NGjVCvbvh2uugQcfhGPHnK5MypmCioiI+IcmTSAlBe65xz6fMgW6dIHt252tS8qVgoqIiPiP0FCYNs12sq1e3fZeiY+HTz5xuDApLwoqIiLif/r1g/R0aNvWtuHv2xdGjrSdbSWgKKiIiIh/atAAli2D0aPt82nToEMH+PFHR8uSsqWgIiIi/qtyZbtW5fPP7UaGaWmQkGD3CpKAoKAiIiL+75prYN066NwZcnPhppvgzjshL8/pyuQ8KaiIiEhgqFvXttofP952t50xAxITYfNmpyuT86CgIiIigaNSJdvBdvFiiIqCTZugTRt44w3b3Vb8joKKiIgEnm7dYP166N4djhyxewcNGQKHDjldmZwlBRUREQlMUVGwYAE8/jgEB9tdmS+7zAYY8RsKKiIiEriCgmDsWPjqK7uG5YcfbO+VV17RVJCfUFAREZHA16mTvSuoVy/bFG74cBgwALKzna5MfoeCioiIVAw1a8Jnn8Gzz9r+Kx98YDc5XL3a6crkNBRURESk4nC54L77YPlyaNgQMjKgY0d47jlNBfkoBRUREal4EhNtF9v+/eHYMbj/fujTB375xenK5DcUVEREpGKqXh3mzoWXX7a7Micn252YV6xwujI5iYKKiIhUXC6XXVibmgqXXAI//wxdu8LkyeDxOF2d4OWgkp+fT/369Zk3b16x42+//TYXX3wxbrebDh06sGHDBm+WJSIiFV18PKxZA7fcAoWFMG4cJCXBnj1OV1bheS2o5OXlcdNNN7Fjx45ix1NTUxk8eDC33HILq1evpmXLliQlJXHkyBFvlSYiIgLh4bYp3KxZEBYGixbZALNkSakvL/QYUrb+wqfrdpKy9RcKPVqMWx68ElQWLlzIZZddxrZt26hRo0axcy+99BK9e/dm4sSJtGzZkpdffhm3281HH33kjdJERET+y+Wy7fbXrIHmzWH3brjqKpgwwV5p+Y8Fm7Lo9OQSbpqZysj31nHTzFQ6PbmEBZuyHCw+MHklqDzxxBPceOONpKSkEB4eXuxcamoqffv2LXoeHBxM9+7dWblypTdKExERKalZM1i1Cm67zd62/Oijdv+gnTtZsCmL4XPSyMrOL/Ylu7PzGT4nTWGljFXyxn9k0aJFVK5cudRzO3fupEGDBsWONWzYkGXLlpX6+oKCAgoKCoqe5+TklFmdIiIiRapUgZkz4Yor4M474euvMfHxLOx5Pyb6jyVebgAXMDF5M92bRRMc5PJ6yYHIK1dUThVSwAaP6tWrFzsWFhZGXl5eqa+fPHkykZGRRY/Y2NiyLFVERKS4m2+2PVdatcK1fz/PvTmOMUtnUanweImXGiArO59VGQe8X2eAcvz25LCwMI4ePVrsWF5eHmFhYaW+fuzYsWRnZxc9MjMzvVGmiIhUZE2aQEoKPw0cCsBdqz5m7jsPUje79LuC9ubml3pczp7jQaVevXps27at2LHt27dTt27dUl8fGhpKREREsYeIiEi5Cw1lz6SnuLPvOLJDq5Kwawufv34vV/9Qck1l7XC3AwUGJseDSseOHZk/f37Rc4/Hw+LFi2nXrp2DVYmIiJSU2LAGG9pcSc+h00iPaUpkwWFe/dfjTPjyVUKOH8MFxES6SWxY43e/l5wZx4PK3XffzbvvvsuMGTP4/vvvGTVqFLm5ufTv39/p0kRERIoJDnIxoXczdkZGceMtT/JKYj8Ahq5N5qM5D1D/4C4m9G6mhbRlyPGgEh8fz9tvv80zzzxDXFwcKSkpfP7551SrVs3p0kREREro0SKG6YMSuLBGNZ64Yhi39n+EX8IiaLlnK1++fT89Nn3tdIkBxWWMf+9rnZOTQ2RkJNnZ2VqvIiIiXlPoMazKOMDe3HzqHj5Iwri7cX3zjT15++0wdaq9xVlKdaaf3woqIiIiZeH4cXjsMfswBlq0gPfft83jpIQz/fx2fOpHREQkIFSqBBMnwuLFEB0NmzZBmzbwxhs2uMg5UVAREREpS926wbp10L07HDli9w4aMgQOHXK6Mr+koCIiIlLWoqJgwQJ4/HEIDra7Ml92Gaxf73RlfkdBRUREpDwEBcHYsfDVV1C3LvzwA7RtC6+8oqmgs6CgIiIiUp46dbJTQb16QUEBDB8OAwZAdrbTlfkFBRUREZHyVrMmfPYZPPssVK4MH3wArVrB6tVOV+bzFFRERES8weWC++6D5cuhYUPIyICOHeG55zQVdBoKKiIiIt6UmAhpadC/Pxw7BvffD336wC+/OF2ZT1JQERER8bbq1WHuXHj5ZQgNheRkiI+HFSucrsznKKiIiIg4weWyC2tTU+GSS+Dnn6FrV5g8GTwep6vzGQoqIiIiToqPh7VrYdAgKCyEceOgRw/Ys8fpynyCgoqIiIjTqlWD2bPh9dftRoaLF9sA8+9/O12Z4xRUREREfIHLBbfeam9ZbtECdu+2bfj//ne74WEFpaAiIiLiS5o1g2+/hdtvt7ctP/aY3T9o506nK3OEgoqIiIivqVIFZsyAd96x00LffGOngr74wunKvE5BRURExFfddJPtudKqFezfDz17wv/8j+2/UkEoqIiIiPiyJk0gJQXuucc+f+op6NIFtm1ztCxvUVARERHxdaGhMG0afPyxbRaXmmqvsvzrX05XVu4UVERERPxF376Qng5t28Kvv0K/fnDvvXZX5gCloCIiIuJPGjSAZctg9Gj7/IUXoEMH+PFHR8sqLwoqIiIi/qZyZZgyxd4FdOGFdsFtQgK8957TlZU5BRURERF/lZQE69bZxbW5ufYuoTvugCNHnK6szCioiIiI+LOLLrKt9v/+d9vdduZMu4Zl82anKysTCioiIiL+rlIlmDjR7hEUHQ2bNkGbNvDGG7a7rR9TUBEREQkU3brZqaDu3e30z9ChMGQIHDrkdGXnTEFFREQkkERFwYIFMHkyBAfDW2/BZZfZAOOHFFREREQCTVAQjBkDX38NdevCDz9Au3YwfbrfTQUpqIiIiASqjh3tlZTevW1TuBEj4MYbbbM4P6GgIiIiEshq1oRPP4XnnrP9Vz780PZcWb36tF9W6DGkbP2FT9ftJGXrLxR6nLkSU8mR/6qIiIh4j8sFo0bZKywDBkBGhv3zk0/a4y5XsZcv2JTFxOTNZGXnFx2LiXQzoXczerSI8WrpuqIiIiJSUbRpY/cK6t8fjh2D+++Ha6+FX34pesmCTVkMn5NWLKQA7M7OZ/icNBZsyvJqyQoqIiIiFUlkJMydaxfWhobCvHkQHw/Ll1PoMUxM3kxpkzwnjk1M3uzVaSAFFRERkYrG5YK77oJvv4VLLoGff4bLL+fn//k7u389dft9A2Rl57Mq44DXSlVQERERqaji4mDtWhg0CAoLqf/MJN6cO4ELDx887Zftzc0/7fmypKAiIiJSkVWrBrNnw+uvUxhWhS7b0vni9XvpsG3dKb+kdrjba+UpqIiIiFR0LhfceiusWsXWqAbUPnyQOe+P575lcwj2FP73Zdi7fxIb1vBaaQoqIiIiAkBwi+ZsTf6Sd+OuJgjDyJXv8c57DxGVu58TNzBP6N2M4CDXab9PWVJQERERkSJ/atOYC+a8zt8HjONQSBhtMzfx4NdvEh3pZvqgBK/3UXEZ42dN/38jJyeHyMhIsrOziYiIcLocERGRgFDoMWxYuoboRx/i56dfJOGyJmV6JeVMP7/VmVZERERKCA5y0apbG+i2CO9eQylOUz8iIiLisxRURERExGcpqIiIiIjPUlARERERn6WgIiIiIj5LQUVERER8loKKiIiI+CwFFREREfFZCioiIiLisxRURERExGcpqIiIiIjPUlARERERn6WgIiIiIj7L73dPNsYAdrtoERER8Q8nPrdPfI6fit8HldzcXABiY2MdrkRERETOVm5uLpGRkac87zK/F2V8nMfjYdeuXYSHh+Nyucr0e+fk5BAbG0tmZiYRERFl+r19gcbn/wJ9jBqf/wv0MWp8584YQ25uLnXq1CEo6NQrUfz+ikpQUBB169Yt1/9GREREQP4FPEHj83+BPkaNz/8F+hg1vnNzuispJ2gxrYiIiPgsBRURERHxWQoqpxEaGsqECRMIDQ11upRyofH5v0Afo8bn/wJ9jBpf+fP7xbQiIiISuHRFRURERHyWgoqIiIj4LAUVERER8VkKKqXYv38//fv3p2rVqkRFRTF+/PjfbfHra8aPH4/L5Sr2uOqqqwBIS0ujbdu2uN1uLrnkEubOnVvsa99++20uvvhi3G43HTp0YMOGDU4MoVTGGNq1a8eLL75YdGzx4sW0aNECt9tNXFwcS5cuLfY1zz77LHXr1qVKlSr06NGDHTt2FJ07cuQIt99+O5GRkVxwwQWMGDGC/Px8r43nt0obX2xsbIn3cs6cOUXn/WV8u3btYuDAgdSsWZMLL7yQ66+/np07dwKB8R6ebnyB8h5u2LCBbt26ER4ezoUXXsgNN9zAvn37gPP7veLxeBgzZgy1atWiWrVqDBw4kIMHD3p1bHD68XXu3LnEezhp0iS/Gt/JduzYQUREBPPmzQN8/GfQSAnXXHONadasmfn3v/9t5s+fb6Kiosxzzz3ndFln5fbbbzc33XSTycjIKHrs3r3b5OTkmKioKNO3b1+zZs0a8/LLL5uQkBCzZs0aY4wxKSkpJigoyPz97383GzZsMHfccYepU6eOOXz4sMMjMub48eNm+PDhBjAvvPCCMcaYbdu2mbCwMHPnnXeadevWmQkTJphq1aqZn3/+2RhjzNy5c01wcLB54YUXzLp160yfPn1Mq1atjMfjMcYYM2LECBMTE2OSk5PNN998Y5o2bWpGjhzpM+MzxpiQkBDz0UcfFXsvDx06ZIzxn/EVFBSY5s2bm+7du5tVq1aZlJQU06lTJ9OzZ8+AeA9PNz5jAuM9zMnJMbVr1zZDhgwx69evNytXrjRt2rQxt99++3n/XpkyZYqpWrWqmTNnjlm9erXp0KGD6dOnj8+MzxhjmjRpYp5//vli7+Gvv/7qN+P7rT/96U8GMMnJyT7/M6ig8hs//vijAUx6enrRsVmzZplGjRo5V9Q5uPbaa83DDz9c4vhrr71moqKiTF5eXtGxwYMHm2HDhhljjBk0aFCxH6Djx4+bRo0amdmzZ5d7zafz7bffmnbt2pkGDRqYhg0bFn2QP/zwwyY+Pr7oB8YYY7p06WIeffRRY4wxnTp1KvYDk5OTY6pVq2a++eYbc/jwYRMaGmr+9a9/FZ1fsmSJqVKlSrH/f7zhVOM7cOCAAcyPP/5Y6tf5y/hWrlxpmjRpUizwpqSkmCpVqgTEe3i68QXKe/jDDz+Yu+++2xw/frzo2NSpU02XLl3O+/dKbGxssX8Mbt261QQFBZnt27eX76BOcrrxGWNMRESE+fLLL0v9Wn8Y38lee+0107p1a1O3bl2TnJzs8z+Dmvr5jdTUVBo0aEB8fHzRsaSkJH766Sf27NnjXGFnac+ePURHR5c4npqaSlJSEm63u+hYUlISK1euLDrft2/fonPBwcF079696LxTpk6dSmJiIunp6dSrV6/oeGpqKtddd12xfZ5OjMfj8bB69epi4wkPD6djx46sXLmS9PR0XC4XSUlJRee7dOmCy+Vi/fr13hnYf5xqfCf+zpX2XvrT+Nq3b8/3339PlSpVio4FBQVRUFAQEO/h6ca3a9cuwP/fwyZNmvDiiy8SHByMMYYNGzYwY8YMrr/++vP6vbJz504yMzOLnW/UqBFNmjQhJSXFJ8aXn59PTk5Oqe8h+Mf4Tti5cydjx45l1qxZBAcHF9Xvyz+DCiq/sXPnTho0aFDsWHR0NG63m8zMTGeKOgd79uzhyy+/5JJLLiE6Opr+/fuza9euUsfXsGHDorH93nmnvPnmmzz//PNUr1692PHT1bt//34KCgpOeX7nzp1ER0cXa2QUHBxctAGXN51qfHv27KFy5crcfffdREVF0bRpU5588kmMMX41PqDEpmNPPPEEV1xxRcC8h6ca3/79+wPmPQRITk4mNDSUuLg4WrZsyb333ntev1d27txJUFBQsYD+26/3ptLGd+IfDFOmTOGiiy6iUaNGjB49moKCAsC/xnfHHXdw991307Jly6Jjvv4z6PebEpa1goKCEh8WAGFhYeTl5Xm/oHO0Z88ejh07xhtvvEFBQQHjxo1j2LBhHDt2rMT4Th5baeP3hbFXrly51OOnq/fEL5HSzmdnZ/vUe32q8Z34Bdm8eXNGjhxJeno6I0eOpH79+nTs2BHwj/GdzBjD3/72N5YsWUJKSgq9evUKiPfwhN+Ob+PGjUDgvIdXXHEF6enpbNmyhYcffpjx48f/7u+N3/s5jYiIKPav+d9+vTeVNr7evXsD9h+tycnJbN26lXvvvZeaNWsyZswYvxnf7NmzyczM5JNPPil23Nd/jyqo/EZYWBhHjx4tcTwvL4+wsDAHKjo3K1asoEWLFkUfgDNnzqRly5ZcfvnlJcZ38thKG78vj/109Z6o+XTnff29TkpKYv369Vx66aUAtGrVis2bN/Pxxx8X3cXlT+PLy8vjz3/+MykpKSxevJhLL700oN7D0sZXt27dgHoPq1WrRvPmzWnevDn16tWjc+fOtG/f/px/r/jaGEsb39ixY1m3bh1xcXEAJCQksGfPHmbPns2YMWP8Yny7d+/mgQce4IsvvijxDyNf/xnU1M9v1KtXj23bthU7tnfvXvLz86lbt64zRZ2DOnXqFPvL2LhxYwDcbneJ8W3fvr1obKWN/+TzvuZ09dasWZMqVaqc8ny9evXIzMzE4/EUnfN4PGRmZvrMeENCQqhTp06xY40bNyYrK8vvxpeXl0ePHj3YsmUL3377LW3atAEC5z081fgC5T1csWIFr732WrFjzZs3Jz8/n9DQ0HP+vVKvXj2OHDlSdBtwaV/vDacbX2ZmJrGxscXOnXgPwT/G9/jjj7N//346deqE2+3G7Xazfft2+vXrR+3atX36Z1BB5Tc6dOjAli1bir0pCxcupH79+qdcSOVrPv/8c/7whz9w6NChomObN28GYNCgQSxatKjYX6qFCxfSrl07ADp27Mj8+fOLznk8HhYvXlx03tf8tl7473hcLhcdOnQodv7w4cMsX76cdu3aERcXh8fjYfny5UXnV6xYQWFhYdG/nJw2aNAgHnjggWLHNm/eTExMjN+N7/bbb+fXX39l2bJlxX6BBcp7eKrxBcp7mJGRwfjx44tdzv+///s/XC7Xef1eqV27NhdffHGx89u3b2fLli1e/b1zuvG99tprDBgwoNjrT7yH4B/jGzt2LJs3b2bdunVFjzp16jBt2jS6devm2z+DZXLvUIDp37+/6dy5s1mzZo358ssvTZ06dcyUKVOcLuuMFRQUmKZNm5qePXuatLQ088UXX5jmzZubpKQkc+TIERMbG2uGDx9uNm/ebF577TUTEhJiUlNTjTHGpKenG7fbbV599VXz3XffmXvuucdERUWZ3Nxch0f1X127di26fXfXrl0mPDzcPProo+a7774zjz/+uAkLCzPbtm0zxhgzb948Ex4ebubOnWs2bdpkbrjhBtOiRQtTWFhojDHmgQceMJdeeqlZvny5SUlJMc2bNzcjRoxwbGzGFB/fkiVLTKVKlczUqVPNhg0bzLPPPmtCQ0PN+++/b4zxn/F98cUXpnLlymbBggXF+lBkZGSYHTt2+P17eLrxLVq0KCDew0OHDplGjRqZ66+/3qSnp5uvvvrKJCYmmt69e5/375UXX3zRxMTEmAULFpi0tDTTtWtXc8011/jM+DZv3mzCwsLMuHHjzMaNG80///lPU716dfPkk0/6zfhKU79+fZOcnOzzv0cVVEpx8OBBc/PNN5tq1aqZGjVqmNGjRxe9If5i69atplevXiYyMtLUrl3bDBw40GRlZRljjNm0aZPp1KmTCQ0NNQ0aNCjRI+Wjjz4yl1xyiQkJCTGtW7cuatrkK07+IDfGmG+++cbEx8ebkJAQc+mll5oFCxYUe/306dNNvXr1TGhoqLniiivM1q1bi84VFBSYv/71r+aCCy4w4eHhZtiwYY43t/vt+N577z3TrFkzExYWZpo0aWKeffbZYq/3h/ENHTrUAKU+MjIy/P49/L3xBcJ7aIwxW7ZsMVdffbUJDw83MTExZsiQIWbfvn3GmPP7veLxeMwjjzxioqKiTFhYmLnuuuuKvq83nW58X375pWndurWpUqWKqV+/vhk3bpw5evSoX43vt04EFWN8+/eoyxg/6w0vIiIiFYbWqIiIiIjPUlARERERn6WgIiIiIj5LQUVERER8loKKiIiI+CwFFREREfFZCioiIiLisxRURERExGcpqIiIiIjPUlARERERn6WgIiIiIj5LQUVERER81v8D4j0l+WRsk4UAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(altitude, temperature)\n",
    "\n",
    "# ------------------- 计算模型 ------------------------\n",
    "\n",
    "reg = LinearRegression(fit_intercept=True)\n",
    "r = reg.fit(altitude.reshape(-1, 1),\n",
    "       temperature.reshape(-1, 1))\n",
    "print(r.coef_, r.intercept_)\n",
    "\n",
    "x = np.array([0, 4000])\n",
    "plt.plot(x, x * r.coef_[0][0] + r.intercept_[0], color = 'red')\n",
    "\n",
    "# 预测\n",
    "print('预测 8000 米海拔的气温为:', r.predict([[8000]])[0][0])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b101619d-985c-483c-9a00-bbf94a9244c2",
   "metadata": {
    "jp-MarkdownHeadingCollapsed": true
   },
   "source": [
    "### No.2\n",
    "\n",
    "https://www.heywhale.com/mw/dataset/64214131a119a32d1b00ecf3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3922265f-f100-4e25-9dc3-77d81676589d",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "4f60a98f-dd61-4ff9-9fa8-e7075e92e46b",
   "metadata": {},
   "source": [
    "### No.3 房价预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "5d84dd5a-3f5a-4172-8ad9-3a4c317e0527",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import datasets\n",
    "import pandas as pd\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "04abde3a-1370-438e-a5a0-ea6ef9df5633",
   "metadata": {},
   "source": [
    "1、加载数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "dab1afbe-4d2e-42a9-a07a-dcf7854ad276",
   "metadata": {},
   "outputs": [],
   "source": [
    "data_url = \"http://lib.stat.cmu.edu/datasets/boston\"\n",
    "raw_df = pd.read_csv(data_url, sep=\"\\s+\", skiprows=22, header=None)\n",
    "data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])\n",
    "target = raw_df.values[1::2, 2]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "163f817c-798d-4f3c-aa75-67ec58faf9c4",
   "metadata": {},
   "source": [
    "2、查看数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "6c318bb1-dd14-4678-8ee4-8468241b2a95",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(506, 13)\n",
      "(506,)\n"
     ]
    }
   ],
   "source": [
    "print(data.shape)#样本，每个样本有 13 个特征\n",
    "print(target.shape)#价格"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7b79e949-6d0c-4f4c-b7fd-220875beb589",
   "metadata": {},
   "source": [
    "3、数据拆分\n",
    "\n",
    "拆分为 4:1，表示训练集和测试集规模之比"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "84f63622-dd93-4a23-832b-4c7dceb2face",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train set: (405, 13) (405,)\n",
      "test set: (101, 13) (101,)\n"
     ]
    }
   ],
   "source": [
    "idx = np.arange(506)\n",
    "np.random.shuffle(idx)#索引打散\n",
    "\n",
    "train_index = idx[:405] # 506 * 0.8 = 404.8 ≈ 405\n",
    "test_index = idx[405:]\n",
    "\n",
    "X_train = data[train_index]\n",
    "X_test = data[test_index]\n",
    "\n",
    "y_train = target[train_index]\n",
    "y_test = target[test_index]\n",
    "\n",
    "print('train set:', X_train.shape, y_train.shape)\n",
    "print('test set:', X_test.shape, y_test.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8e08f8a6-f817-4d4b-ae41-f828c11d9543",
   "metadata": {},
   "source": [
    "4、数据建模"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "c781a1a6-9961-4744-88ad-6f87e5b5f20a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ -0.10459456,   0.04667291,   0.03277411,   3.71611215,\n",
       "       -17.15276206,   4.19308256,  -0.00802844,  -1.43967503,\n",
       "         0.2728901 ,  -0.00978967,  -0.91482444,   0.00900977,\n",
       "        -0.52471486])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "32.77253629431174"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.set_printoptions(suppress=True)\n",
    "model = LinearRegression(fit_intercept=True)\n",
    "model.fit(X_train, y_train)\n",
    "\n",
    "# coef_ 表示斜率，其中有正有负，分别表示什么呢？\n",
    "# 正表示正相关，比如面积、卧室数量；负表示负相关，比如犯罪率、环境污染\n",
    "display(model.coef_, model.intercept_)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8f623e82-4d9d-4522-ba54-57ff6703c741",
   "metadata": {},
   "source": [
    "5、模型验证"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "10b53c2a-bccb-4d68-a066-b80b8fd69533",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([27.6 , 20.54, 24.07, 25.9 ,  5.71, 23.7 , 11.95, 21.51, 14.51,\n",
       "       27.2 , 24.4 , 10.09, 39.78, 28.62, 36.16, 33.63, 25.86,  9.35,\n",
       "       25.  , 17.66, 30.69, 22.78, 22.7 , 24.24, 22.59, 28.71, 20.11,\n",
       "       32.33, 25.57, 29.25, 17.29, 36.99, 20.18,  8.28, 17.5 , 15.27,\n",
       "       21.29, 13.45, 22.02, 37.16, 13.04, 24.77, 27.26, 19.5 , 11.57,\n",
       "       12.95, 19.7 , 24.27, 22.82, 16.05, 22.08, 19.01, 17.42, 32.49,\n",
       "       21.36, 13.89, 20.94, 23.03, 23.44, 22.33, 25.15, 28.99, 21.32,\n",
       "       17.25,  6.07, 28.7 , 25.43, 25.55, 16.72, 14.91, 13.37, 26.23,\n",
       "       22.98, 18.24, 31.64, 27.41, 19.89, 15.35, 27.37, 19.24, 20.52,\n",
       "       13.22, 28.67, 13.81, 35.25, 17.99, 28.54, 20.79, 32.58, 39.43,\n",
       "       23.62, 14.01, 26.32, 15.22, 21.9 , 25.41, 33.28, 20.39, 30.76,\n",
       "       36.9 , 27.98])"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#预测结果\n",
    "y_ = model.predict(X_test).round(2)\n",
    "y_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "ccc08594-7036-45fa-9da3-8179a0b89012",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([  5.6 ,   1.74,   1.87,  -0.6 ,  -8.09,   1.3 ,   6.35,   2.21,\n",
       "        -0.29,   4.9 ,   2.7 ,   1.79,  17.88,   0.22,  -2.54,   6.63,\n",
       "        10.86,  -8.45, -25.  ,   3.56,   7.19,   1.58,   2.4 ,  -5.36,\n",
       "         2.79,   0.71,  -0.39,   0.73,   0.77,   4.25,  -0.51,  -6.11,\n",
       "         3.98,  -6.12,  -5.  ,  -6.63,   0.29,  -0.05,   2.02, -12.84,\n",
       "        -0.86,   3.17,  -8.94,   7.  ,  -4.73,   0.25,   0.1 ,   1.17,\n",
       "        -0.38,  -1.35,   0.98,   0.71,  -1.88,  -0.71,   4.56,   6.39,\n",
       "         1.34,   3.03,   2.24,   4.93,   6.65,   6.09,   5.72,  -2.75,\n",
       "        -4.13,   5.  ,  -2.67,  -4.55,  -0.78,  -2.29,   0.27,  -3.57,\n",
       "         1.98,  -1.26,   0.84,   5.41,   0.79,   0.35,   4.07,   1.24,\n",
       "         7.42,  -0.28,   5.07,  -0.19,   0.15,   5.29,   5.24,  -3.71,\n",
       "         1.48,  -4.07,   4.22,  -1.69,   2.52,  -0.98,  -1.4 ,   2.21,\n",
       "         0.18,   6.59,  -3.94,   1.7 ,   4.08])"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_ - y_test"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "11b27fc1-ebe6-4e1d-a12d-245db506a5b7",
   "metadata": {},
   "source": [
    "6、模型评估"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "3801ec99-fc0d-4e48-99c7-129d9a142997",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6059267047253969"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#越接近 1 表示模型越好\n",
    "model.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b626e162-bdda-49c1-b6a5-7aec0b5b487e",
   "metadata": {},
   "source": [
    "手动计算 score：（根据 score 方法的注释）\n",
    "\n",
    "<font size=5>$R^2 = 1 - \\frac{u}{v}$</font>\n",
    "\n",
    "$u = \\sum (y - \\hat y)^2$\n",
    "\n",
    "$v = \\sum (y - y_{mean})^2$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "17f73667-8436-44df-9a0d-acfa79521c07",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2646.8383915464597"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred = model.predict(X_test)\n",
    "u = ((y_test - y_pred) ** 2).sum()\n",
    "u"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "f67eb412-fbef-46e8-b75a-53d7d839e2a2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6716.614455445545"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v = ((y_test - y_test.mean()) ** 2).sum()\n",
    "v"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "e93f4d89-fce4-4d98-aa69-f1b436818fa8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6059267047253969"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "1 - u / v"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "625e5798-036e-4489-ad3f-cf614709b35f",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import mean_squared_error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "5202b649-9de5-4392-a8db-3de208f24003",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "26.20632070838079"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_squared_error(y_test, y_pred)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fbf2650d-d310-468a-b301-139c7bbe3b07",
   "metadata": {},
   "source": [
    "----"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "f6b683b1-6925-47ca-ac60-abc1e997517a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7627642089634599"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#查看训练集的评分。分数更高，因为拟合度高\n",
    "model.score(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "3da10dfc-f73c-4a89-b0b1-20721fb13f96",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "21.06347064533334"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_squared_error(y_train, model.predict(X_train))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "7a246e43-5a33-4da5-a08e-c071d10cadaa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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UFpaiieffBLDhw/HAw88gGuuuQYrV660qbXG6DnH2tpaPPDAA3jqqafw3nvvYfny5Vi2bBm2bt1qU2uNS05O1nSc7JijTAnNaAKBAM6cOdPh8VOnTiEQCMQ9NtpxqtFzjmGVlZW4/vrrcemll2LVqlXK9x71nOPvfvc7NDQ0YNasWXY1Two955iSkoJx48a1eayoqAhVVVWWttEsPef45JNP4tprr8X06dMBAEOHDkVtbS0WLFiA0tJSW9prNdkxR+lPcd++fVFdXd3msS+++AKnT5/uUPs42rE1NTWGayTbRc85AsCOHTtQWlqKm2++GS+//DK6du1qU0uN03OOs2bNwu7du9G1a1ekpaXh2muvxbFjx5TvJes5x9zc3A7HNjU14YILlO4b6TrHffv24ZJLLmnzWHFxMT755BOrm2kb2TFH6WB8+eWX45///GebE3799deRn5+PnJycNseOHj0aGzdubPPY66+/rnyOSs851tfX44YbbsDMmTOxcOFCzTuiOE3POVZUVOAf//gHKisrUVlZiWeffRbdunXDa6+9ZnOr9dFzjqNGjcIf//hHHD9+HMD53tRrr72Giy++2M4m66bnHHv27NkhUB04cKDDcW7WPua0tLRg8+bNxmOOoTkYNrrppptEaWmp2LlzpygvLxe9e/cWTzzxhNixY4cYNGiQePjhh4UQQhw8eFBkZGSIRx99VOzbt088/vjjIhAIiOrqaofPID6t53jLLbeIYcOGic8++0xUVVVFvurr6x0+g/i0nmN7W7ZsccXUNiG0n2NVVZUIBAIiPz9fTJ06VVxyySWiS5cu4vDhww6fQXxaz3HdunWiS5cu4oUXXhB79+4Va9asET179hRLlixx+Az0ueKKKyJT215++WUxaNCgyPe7du0SaWlp4plnnhH79u0T999/v+jVq5dobGw09FzKB+MTJ06IKVOmiPT0dJGdnS1mzZolmpubxZYtWwQA8cMf/jBy7Ntvvy2GDBkiUlJSxNe//nWxadMm5xqug9ZzTEhIEAA6fF1xxRWOtl8LPX/H1twUjPWc4xtvvCGKi4tFly5dxBVXXCF27tzpXMN10HOOTz/9tLjkkktEIBAQhYWFYt68eeLcuXPONd6A1sH4hRdeEADEnDlzIv//5z//WQwcOFCkpKSI4cOHm/o7sp4xEZEClM4ZExH5BYMxEZECGIyJiBTAYExEpAAGYyIiBTAYExEpgMGYiEgBDMZERApgMCYiUgCDMRGRAhiMiYgU8F+DS/yYzzsNxwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 400x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "X = np.random.rand(100, 1)\n",
    "w, b = np.random.randint(1, 10, size = 2)\n",
    "\n",
    "y = w * X + b + np.random.randn(100, 1)\n",
    "\n",
    "plt.figure(figsize = (4, 3))\n",
    "_ = plt.scatter(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "425a5a86-ad1f-4d2d-81ce-9c46ab2b533a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100, 2)"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X = np.concatenate([X, np.full(shape = (100, 1), fill_value = 1)], axis = 1)\n",
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "1bcebb8b-e0a9-4694-91b7-817e3a07273f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "真实的斜率和截距为 1 8\n",
      "求出的斜率和截距为 [0.76093453 7.86232066]\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 400x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "epoches = 10000\n",
    "eta = 0.01\n",
    "\n",
    "#要求解的系数\n",
    "theta = np.random.randn(2, 1)\n",
    "\n",
    "for i in range(epoches):\n",
    "    #计算梯度\n",
    "    g = X.T @ (X @ theta - y)\n",
    "    #更新 theta\n",
    "    theta = theta - eta * g\n",
    "\n",
    "print('真实的斜率和截距为', w, b)\n",
    "print('求出的斜率和截距为', theta.flatten())\n",
    "\n",
    "# ------------------------\n",
    "\n",
    "plt.figure(figsize = (4, 3))\n",
    "_ = plt.scatter(X[:, [0]], y)\n",
    "\n",
    "x2 = np.array([0, 1])\n",
    "_ = plt.plot(x2, x2 * theta[0] + theta[1], color = 'red')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a4a64c21-648f-40b0-9be8-c76fb92addcc",
   "metadata": {},
   "source": [
    "**逆时衰减：随着迭代次数添加，一点点变小学习率**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "104b12ad-1cf3-483a-ba90-bc9ce4023e12",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "真实的斜率和截距为 1 8\n",
      "求出的斜率和截距为 [0.76093453 7.86232066]\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 400x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "epoches = 10000\n",
    "\n",
    "t0 = 5\n",
    "t1 = 1000\n",
    "def learning_rate_schedule(t): # 可以被叫做逆时衰减函数\n",
    "    return t0 / (t + t1)\n",
    "\n",
    "#要求解的系数\n",
    "theta = np.random.randn(2, 1)\n",
    "\n",
    "times = 0\n",
    "for i in range(epoches):\n",
    "    #计算梯度\n",
    "    g = X.T @ (X @ theta - y)\n",
    "    #更新 theta\n",
    "    lr = learning_rate_schedule(times)\n",
    "    theta = theta - lr * g\n",
    "    times += 1\n",
    "\n",
    "print('真实的斜率和截距为', w, b)\n",
    "print('求出的斜率和截距为', theta.flatten())\n",
    "\n",
    "# ------------------------\n",
    "\n",
    "plt.figure(figsize = (4, 3))\n",
    "_ = plt.scatter(X[:, [0]], y)\n",
    "\n",
    "x2 = np.array([0, 1])\n",
    "_ = plt.plot(x2, x2 * theta[0] + theta[1], color = 'red')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e7962653-5a9e-4fb0-95ac-f43ad39e86fd",
   "metadata": {},
   "source": [
    "<font size=6>$\\theta_k^{t+1} = \\theta_k^{t} - \\alpha * ((\\sum \\limits_{j=0}^n \\theta_jx_j^{(i)} - y^{(i)}) x_k^{(i)})$</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0ca7f24a-88fb-4937-9041-f5b73b0a4b76",
   "metadata": {},
   "source": [
    "#### 一元一次线性回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "cc2dfe87-f668-4685-a044-d5ee34d36f94",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "真实的斜率和截距为 6 6\n",
      "求出的斜率和截距为 [5.09657183 6.50557241]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWMAAAESCAYAAAAovLSFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA4tklEQVR4nO2deXgT5dqH77R0SUsXytaCLGW3VkFAKJaCsiigCPipRw4cd+GAKItyEDdAFIRzBEQQEMEN1O8DRY6yKAouIKsCooAKFKhQUEDaUqAtzXx/jKldkmYmmSST9Lmvq9dF3k5m3jehv3nnWS2KoigIgiAIfiXE3xMQBEEQRIwFQRBMgYixIAiCCRAxFgRBMAEixoIgCCZAxFgQBMEEiBgLgiCYgGr+noAdm83G8ePHiYmJwWKx+Hs6giAIHqMoCnl5edSrV4+QkMr3vqYR4+PHj9OgQQN/T0MQBMFwsrKyuOyyyyo9xjRiHBMTA6iTjo2N9fNsBEEQPCc3N5cGDRqU6FtlmEaM7aaJ2NhYEWNBEIIKLaZXceAJgiCYABFjQRAEEyBiLAiCYAJMYzMWBEHQQrFNYVvmGX7Lu0idmEg6JCcQGhL44bAixoIgBAxrf8hm0kd7yc65WDKWFBfJhL4p9EpN8uPMPEfMFIIgBARrf8hm2JLvyggxwImciwxb8h1rf8j208yMQcRYEATTU2xTmPTRXhy1JbKPTfpoL8W2wG1cJGIsCILp2ZZ5psKOuDQKkJ1zkW2ZZ3w3KYMRMRYEwfT8ludciN05zoyIGAuCYHrqxEQaepwZETEWBMH0dEhOICkuEmcBbBbUqIoOyQm+nJahiBgLguATim0Kmw+eZuWuY2w+eFqXsy00xMKEvikAFQTZ/npC35SAjjeWOGNBELyOEfHBvVKTmDe4bYXzJAZJnLFFURRTxILk5uYSFxdHTk6OVG0ThCDCHh9cXmjse9h5g9vqEtJAysDTo2uyMxYEwWu4ig+2oMYH90xJ1CyooSEWOjWtaeQ0TYHYjAVB8BpVIT7YKESMBUHwGlUhPtgoRIwFQfAaVSE+2ChEjAVB8BpVIT7YKESMBUHwGlUhPtgoRIwFQfAq9vjgxLiypojEuEjdYW3BjIS2CYLgdXqlJtEzJTFg4oP9gYixIAg+wdfxwYGUHAIixoIgBCGB2J5JbMaCIAQVztozZZu8PZOIsSAIQUNl6degZvw9tmw3hZdsvpyWJkSMBUEIGlylXwOcKyim7eR1ptshixgLghA0aE2rPldwyXQmCxFjQRCCBj1p1Qrm6igtYiwIQtDQITmBeGuY5uPNVDFOxFgQhKAhNMTCvenJut5jlopxIsaCIAQVI7o1Iz5K++7YLBXjRIwFQQgqQkMsvHDrlS6PM1vFOBFjQRCCjl6pScwf3NbpDtmMFeNEjAVBCEp6pSbx7VM9Gd2jRQWnnhkrxkl3aEEQgh5/FQ2S7tCCIAilCISO0mKmEARBMAGyMxYEIeAJtNrFjnBrZ6woCmlpacyZM6dkbPXq1bRv356oqCiaNGnC1KlTDZukIAiCM9b+kE3naesZuHALI9/bxcCFW+g8bb2p6k5oQbcYFxcX89BDD7F169aSsS+//JIBAwZwxx13sGPHDqZMmcKUKVNYvny5oZMVBEEojbPaxSdMXrvYEbrEeNu2bXTu3Jk1a9aQnPxXyuHKlSsZPnw4//rXv0hJSeHOO+9k0KBBfP7554ZPWBAEASqvXWwfM1MhIFfoEuNZs2bRoUMHdu7cScOGDUvGZ8yYwYsvvlj2xCEhXLxojpxvQRCCD1e1ixXMVQjIFboceG+++SZhYY4zWkJC/tL1rKwsli5dyiuvvOL0XAUFBRQUFJS8zs3N1TMVQdBEMDh2BMdoLfBjlkJArtAlxs6EuDTHjh2jd+/epKenM3DgQKfHTZ06lUmTJum5vCDoIhCbUgra0Vrgx51CQP64iRsa2rZr1y5uvvlmrrnmGpYsWVJmt1ye8ePHM2bMmJLXubm5NGjQwMjpCFUYu2OnvLXQ7tgxWyqsoJ8OyQkkxUVyIueiQ7uxBTXtWW8hIH/dxA1L+ti6dSsZGRncfvvtfPDBB0RHR1d6fEREBLGxsWV+BMEIgs2xIzgmNMTChL4pwF+Ff+y4WwjIn9EZhohxdnY2ffv2ZcyYMcycOROLRWxygv8INseO4JxeqUnMG9yWxLiypgh3CgH5+yZuiJli1KhRNGzYkHvuuYfDhw+XjEdGRpKYmGjEJQRBM8Hm2BEqp1dqEj1TEj228eq5iXujzoUhYrxs2TIURaFJkyZlxrt27coXX3xhxCUEQTPedOwI5sSIQkD+vom7LcalRdZmsxkxF0EwBG85dvyFhOe5h97Pzd83cSkUJAQddsfOsCXfYYEygmzGDg+VIeF57uHO5+bvm7iU0BSCEiMdO/4imOou+BJ3PzdvRGfoQTp9CEFNoD7iF9sUOk9b79ShZN+lbRzXLSDW4yuM+Nwc7arTL2Tzr3oFtB73kK75SKcPQfiTQOjw4AhvevYD9QalBSM+t9LRGef3/EjrRbOouepDLFYr3HMb1K3rlbmLGAuCCfGWZ9+VLTXQhdqozy300EE6TZ4MS5aAPUChTx8oVU/HaESMBcGEeMOz7ypFfEiXZP67OzugnYUef26HD8Nzz8Ebb0BxsTrWrx9MnAht2hgwQ+eIA08QTIjds+9sT2pBFUqtnn1X2WUKsOCrzIB3Fmr93Gw2hZW7jrH54Gk1o+7XX2HYMGjRAhYtUoW4Tx/Yvh0+/NDrQgwixoJgSoz27LuypToj0Gp5uPrcFOBCUTGDFm1l5Hu7eGTmat7vfCu2Jk1h/nwoKoIePeCbb2DVKmjf3mdzFzEWBJNiZHieJ1ljgVbLo2dKIqN6NCfOWrbkb3yU+vrs+SJq5p/lyfWv8fWCB7hj84eEFBVypn0n+PJLWLcOOnXy+bzFZiwIJsaougtGZI0FQi0PRw7KeGsY91zbmPe2HyX+Qi5Dtn3A3d9+THSResy39VoxI2Mwh67qyMbOGYT6ae4ixoJgcowIz3OVXaYFs9fycOagzLlQxOJVO7l/+4fct2MlMYUXANid2JwZGYP5MrktWCyQW+C1IkBaEDEWhCqA3Zb6zyXf6X5vINTycOagrF5wnnt3rOTB7R8SW5APwI91mjAjYxCfN+2ginAp/Ln7FzEWhCpEfFQYZ88XVRj7W/vLePWrTCAwa3mUd1BaCy9y93cfM3Tr+9S4mAfA/lqNmNl5EJ+2SEOxOHaX1YqO8Ml8HSFiLAgmwxuJF84e4QFyzhdxdcMazBtco4K9NTFA4oztO9qIogIG71zNsK3LqXU+B4CDCZcxK30gH1+e4VSES/Dj/UbEWBC8iF5h9UaVtspijO1M+mgvG8d1M8RZ6A/qhsPd337EQ5v/jzr5fwBwOD6Jl9IH8t+UrhSHaHPLnTrnvQw7V4gYC4KX0Cus3mqiqrdeQ0DV8igshMWL6fj886T9+isAv8bWYfa1d/JBajcuheqTOH86KUWMBcELOBPWbCfC6ipDzoK6e+2Zkqh7p+rvDhZeoagI3n4bJk+Gw4exABfrJDG5zQCWXdWTwtCwCm8pX9u6/O/87aSUpA9BMBhXZgEFGP/BnjIZbd5sourvDhaGUlysivDll8P996u1JBITYfZsIo8cIuPFp4iKiXL41sqEGPzvpBQxFgSD0ZJ6/Mf5Iuas/6XktTd3r0bXufALNhu89x5ccQXcdRccPAi1a8OLL6r/fvhhiIykZ0oikdUql7XyemuWhgNiphAEJ7gb1aBVMF/fdJgR3ZoTGmLx6u41oNtQ2WxqoZ4JE+CHH9SxhAQYOxZGjIDq1cscvi3zDCdyK3fC2RR4+qbLqRUTYSonpYixIDjAk6gGrYJ59kJRidPM2/3X7HUuAiZ0TVHg44/hmWdg1y51LC4OHn0URo4EJ10ztN4Ia8VE0K9NfYMmawwixoJQDk+jGjokJxBvDePshSKnx9ixi4cvdq9G1bnwKooCn3yiivD27epYTAyMGgVjxkB8fKVvD2T7uNiMBaEUrqIawHU5ydAQC/emJ2u6XmlR8EUTVXudi35t6tOpaU3zCLGiwOefQ+fO0Lu3KsRRUfD445CZCc8+61KIIbDt47IzFoRSGNV7bkS3Zrz+TWaF1GM7zswOZt29erUd09dfw9NPq+UrASIjYfhwGDcO6tTRdapAto+LGAtCKQzroRZi4YVbr3RYmMeVKJitiaoe+7ku0d6yRRXhzz5TX4eHw9ChMH48JLn/FBBw9vE/ETEWhFIYaXPslZrE/AAUhdLosZ9rFu0dO9ToiNWr1ddhYWrM8BNPQIMGhszbrE8YlWFRFMUUvVRyc3OJi4sjJyeHWCeeUkHwNsU2hc7T1ruMatg4rpvmP+xA7bhs/yycmW1Kfxbr9p5wKNr2Vc4b3JZexb+pIrxypToYGgr33ANPPQWNG3tnEX5Gj67JzlgQ/sQumr1TE1m86bBhNkezmR20otV+vuXg6Uqdni1+P0L4wOnww1fqYEgIDBqkRkw0a+aNqQckIsaCgONHbItFdfLbCSTzghFotZ9vPnTKoWg3Of0rj3zzLrfs/YoQFBSLBcvf/qbujlu1Mnq6AY+IsVDlcWYXtUev3Z/emB4piQFjXjAK7bG4ZT+Thn9k88g37zHgxw2EKjYAVre4lvDJk4hud7Vqrjl4usp9nq4QMRaqNK6K+liA1T+c4Imb/B8OVdr2XCs6Aixq/V1v2aG1ZgV2alqTORsOUD/nN0Z88x637/mMan+K8LpmHZjVeRA/1m1Kwk8KZ77bUvJ+T+s0BxsixkKVxqi4Ym/jyIxSGm8Im9aY3bSIi7z4xQL6bl9DuO0SAF8kt2NGxiC+T2pR8p4z+YVlzu9pneZgQzLwhCpNINT6tZtRKrtp2IVt7Q/Zhl67sqzARb0uo9fCFwht3oz/2foR4bZLbGzUmlsH/Zt77phURogdoTWjsaogO2OhSuPtWgaehrVpaZkEnhegr4zyMbv1Cs/R7v8WEtLnFbigtr0nI4Ot945i7Im4MjeNhOgwzuQ7r9FhlicPMyBiLFRpvFktzVUShBah1lIb2Y43hS00xEKnGhZYNBdmz4Z8te09aWlqt43u3elosbCx3JpO5F5k9P/ucnn+gOoy4iVEjIUqjVa7KMDmg6d1NRatLHNtSJdk/rs722W2mjsiZbiwnT0LM2eqP3lq23vat1eL9/TqpcYA/kn5mOrNB09ruoQZq6j5GhFjocrjqpYBUCETrTKHmZbKbwu+yqzwO0cOLXdEyjBhy8uDl15Su2mcPauOXXWVKsK33FJGhJ3h7TrNwYSIseCUQE3jdQdntQycpflWFgmgx7RQGkd2X1diVhrDhC0/H+bOhenT4fSfO9uUFJg0CW69Vc2g00ggV1HzNSLGgkM86XQRqJR/xHa3Y7MnZoLydt/KxKw0hgjbhQswfz688AL89ps61qIFTJwId9yh1pJwg0CtouZrRIyFCnja6SJYcDcG2QgzQWlBdyZmpfFI2AoKYOFCmDIFsv8MjWvSRK0dMWgQVPNcJgKxipqvETEWyuDubjAYcTcGWY9pwRnlBb28mBmSgVdYCG+8Ac89B1lZ6ljDhmqN4bvvVktbGojegklVyUwGIsZCOQIlI80XuBuD7MpOWplAV2b3Naz626VL8PbbqiPu8GF1rH59ePJJta5weLjn1/CQqmgmkww8oQyBkJHmKzzpp1ZZ5trQLslYKF9exwcOreJiWLIELr8c7rtPFeK6ddWIiQMHYNgw0wixo4xDb2UZmgXZGQtlCOTuukbjaSRAZXbSqxvW8J1Dy2aD5ctVR9y+fepYrVpqj7nhw9XGnyahKpvJ3BJjRVHo1KkTgwcPZsSIEQCsW7eO0aNHc+DAAVq2bMmsWbO4/vrrDZ2s4H0kLrQsnkYCODMt+MShpSjw4Ydq/eA9e9SxGjVg7Fh4+GGoXt24axnEloOnq6yZTLcYFxcX8/DDD7N161YGDx4MwJEjR+jXrx933XUXS5cuZcWKFdxyyy3s37+f+vXrGz5pwXtIXGhFvCWcXusAoiiwapUaDbFzpzoWGwuPPgojR0JcnKGXM8rRtvaHbB5/f4+mY4PRTKZLjLdt28bIkSM5ceIEycnJJeOvvfYaLVu2ZN68eVgsFlq3bs2GDRtYvHgxTz/9tOGTFryLxIVWJCBaJykKfPqpKsLbtqlj1avDqFEwZoy6KzYYoxxtzsIpnRGMZjJdYjxr1iw6dOjApEmT6N+/f8n4li1b6N+/P5ZS6ZG9e/fmyy+/NGyigm+RuFDv4LVwrQ0b1JC0TZvU11FRMGKEapKoVcvz8zvAqHh0rZXpILjNZLrE+M033yTMQezhsWPHaFyuu2tycjJLlixxeq6CggIKCgpKXufm5uqZiuADAmI3GEB4JVxr40Z1J7xhg/o6MlKNihg3To2U8BJGOtr0po8Hq5lMV2ibIyEGVVjj4+PLjFmtVi7Ya506YOrUqcTFxZX8NGjQQM9UBMFwim0Kmw+eZuWuY2w+eNrQgueGh2tt3Qo33ggZGaoQh4erO+GDB2HGDK8KMeiLR3eFVvtvvDUsqLM/DQlts1qtFBaWbaly4cIFrFar0/eMHz+eMWPGlLzOzc0VQRb8hjeTDAwN1/ruO3UnvGqV+rpaNTVm+Mkn1ew5H2FkPLpW++/cQW1Jb+Ydk4sZMCTpo2HDhhy2Z/L8yZEjR7jsssucviciIoLY2NgyP4LgD7ydZGDILvL772HAAGjXThXi0FC49174+WdYsMCnQgzGxqNrTa5JaxLcJjNDxDg9PZ01a9aUGfvkk09IS0sz4vSCoButJgcttYe19mhzdk2PdpF796oV01q3VmOGLRYYPFhN3li8GEpFNRmFls/Ok+zE8tjDKe3vK38eCF47cWkMMVPcd999TJs2jcmTJ3P77bezYsUKNm/ezOLFi404vSDoQo/JwahaHJVd061d5M8/q7Uj3nlHDVkDVZQnTlTTmb2E1s/O6Hh0Cac0aGeclJTEqlWr+OCDD2jdujVvv/02K1asoFGjRkacXhA0o9fkYITt09U1/8gv0L6LPHRINT+kpMDSpaoQDxigmin+93+9LsR6PrvK6m/ocbTZd+IFl2z857bWLH2gIy/d2YZ3H0xj47huVUKIwYOd8RdffFHmdUZGBjvt2T6C4AfccZR5avvUcs3Jq/bx9E0pPPSO813k1PaxhP5zKLz+ulpVDeDmm9XuGm3bapqjJ7jrZPQ0Hr2ynXhVC6uUqm1C0OCOo8xT26fWa9aIDne4i7ySc3xxeBnX3ZSuFni/dEkNWduyBT76yCdCDLDlkPaaEOWxx6P3a1O/pDuJFqpqdTZnSNU2wbTozVZzx+Tgqe1TzzX7talfsovMyTzKVUsXkPTuG1jsyU/duqk74c6dNZ3TKPxRE6IqV2dzhoixYErcift11+TgifNI7zVDz5ym04LpMGeO2nMOVPGdPBmuu07TuYzEXzUhpIlBRUSMBdPhTs2DYpuCzaYQbw3j7IUih+etrK6Bu7ZPzSVH41ATM2bPhnPn1F927KiKcI8emtreG40/a0JIE4OKiBgLpsKdx1dHu+jyaDE5uFOLw5WZI6Ygn7d+3UBo01vBXn+lbVs1bK1PH7+IsB1Pa0J4UvRImhhURMRYMBV6H1+1PmZ7M17VkZkjuuA8w/asYcj2FYTnnlUPvPJKVYT79fOrCNvRXBMiKowXbr2yzGfnbvq4XcBP5F4kITqMM/n6n2KCFRFjwVToeXzV8pgdbw1j7qC2pDXR7uV3h16pSdhsCs8t28HNGz9k6Nb3qXlB3Qmfa9Kc6i88D//zPxBingAmzTUhBrYlvflfNSHcLZ2p5QkGqlbWXWlEjAW/Uv5Rt1Z0hKb31YmJ1PSYffZCESEWi9f/qD/9NpPt46aycssyauefBeBQjXrMTh/IR5d3Ye7l19DLREIM2u3daaVMN+5GQehxFFalrLvSiBgLfsPRTikxNpL4qDByzhe57MH38ffHNV3Hq06gggJsr73G1U9M4Ibc0wAcjavL7PSBrLjieopDQk0bpuVOWJ87URCunmAsQEJ0OE/ddDmJcdYq28RAxNgLeK2bQxDhbKd0MvevXZorgfCrE6ioCN54A557jpCjR6kNHIupzcvX/o3lV/bgUuhff1pmDtPSG9bnThSEFgE/nV9IYpzVdJ+PLxExNhhv1sUNFrQ86sZHhRFRLYQTuX91gykvEH7pZH3pEixZojriMjMBuFC7Ls+3uZX/u+oGCqs5bsAA5g3T0hPW584NUMLYtCFibCBG9QQLdrTslP44X8TSBzoSYrE4FQifdrIuLob33lMz5H75RR2rUwfGj+f7nrex5O3dLk9h5jAtrWF97twAJYxNG+byKAQwRtbFDXa07oBOnStwWfOgssphc//eljhruGdtlGw2WLYMrrpKrSP8yy9QsyZMn65WWBs1ivaX1zestq/Zcaf2sJG1j4MZ2RkbhKR3asfonZKjx+w/8guYvMoDc5GiwMqVMGGCWr4S1Fb3jz0GDz8MMTElh/p0h14Of/gn9NqZ/fn5BBIixgYhdjHteMPWW/oxe+0P2Tz0zk73zEWKAqtXq33mvvtOHYuNhdGj1Z+4OIdv80dxdH/6J/Smj0vxeNeIGBuE2MW0U3qn5AgFuKV1kls7JbergSkKfPYZPP202nkZIDoaRo6ERx+FBNc3Bk9r++rBDP4Jvenjvvx8AhERY4Pwi2c/gOmVmsSQLsks+CrT4e9f/SqTqxvW0C0obpmLvvhC3Ql//bX62mpV296PHQu1a+u6vjv1LfSixT/x+Ad7iIkII01HfWFf4IvPJ1ARB55BSFNFfRTbFP67u/Li4e44PHWZizZtgu7d4frrVSGOiIBRo1TH3PTpuoXYV2jKPDxfxKBFW+k8bX2VK9IeqIgYG4hRPcGqAoa0r3eAFjNQ6+M/0fWRu9Q6wuvXQ1gYDB8OBw/CzJmQmKjrmr5Gj9+hqnbNCETETGEwYhfThrccnpWZi644eZAxXy+h+8Ht6kC1amrzz6eegoYNdV3Hn+jxO1TVrhmBiIixFxC7mGu85fB0FEbV8vfDjN64lF4/bwZACQnBctddqrOuSROdM/c/rvwT5ZGwysBAzBSCU+wt1D1KmnCCNxMB7OaijgUnmbNyGp8sHkGvnzdjs1g4ftOtWPbtU7swB6AQQ+X+icqQsEpzIztjwSHejmH1aiLAgQP0mjaJG995B4vNBsCp3v2oMf156qVe4enUTYGzuN3KkLBKcyM7Y6ECvmqhbrjDMzMT7rsPWrWCJUtUIe7fH3bvptbqDwkNEiG20ys1iY3jurH0gY7EW50XKJJ048DAoiiKKYol5ObmEhcXR05ODrGxsf6eTpWl2KbQedp6p7ste7z0xnHdDHMGeZzSm5UFzz0HixerVdUAbrpJLerTrp0hczQ79hsoOH7KkGge/6BH18RMUUXQKnj+qLHhtsPz+HGYOhVefRUKC9Wxnj3V8pZpaYbMLVCQdOPAR8S4CqDH/hsQNTZOnoRp02DePLj45zyuu04V4YwM/83Lz0hYZWAjYhzk6K1hYOoaG6dOwb//DXPmwPnz6ti118LkydCtm+/nY0IkrDJwEQdeEONOjWVT1p794w81Jjg5WU1TPn8errkG1q6FjRtFiIWgQMQ4iHEn5dhUNTZyc1XTQ3Ky6qA7dw6uvho++kitrHbjjWAJjEdwb8ZsC8GBmCmCGHftv353Bp07By+/DP/5D5z580aRmqoKc//+ASPAdqpaX0RpyOseIsZBjCf2X784g86fh1deUZ1zp06pY61awcSJcPvtEBJ4D3JmqDvsS6rajcdIRIyDGE9rLHvqDNK8Q7p4UQ1PmzoVTpxQx5o1U1seDRwIoaFuz8GfuF3oPkCpajceoxExDmL82XtM0w6psBAWLYLnn4djx9Sxxo3VQu//+IdaVS2AqUp9EavajccbBPb/dgH4awd6IvciZ84VkBAdTmKclQ7JCX7rzVbZDmn+367kxm8/VUPSjh4FQLnsMg4NHcWPN95K7YRYOoSEEpj74b8IiJhtg6hKNx5vIWIc4DjagdopvRP1lf23sh1SiK2Y/nu/4IqFD8KZP+tbJCWx956H+Ke1LUfP2eD9vRXmHqiYOmbbYKrSjcdbiBgHMM52oHayy9nqfLEjcbRDCrEVc/P+jYzc9C5Nz/wKQGHN2oQ/OZ5PM/oxdPk+lHxbmfcEg52xKvVFrEo3Hm8ReO5pAah8B1oaBfd6yblL6Z2PRbHRe/9G1rz+MLM/+jdNz/zKGWssU6+7h08/2kTxyFFMWJfpMiml8JItIGN0TRWz7WVMmSwUYMjOOEDR0pTSji9tdXViIkFR6HlgK6M3LiXlN7X7c05ENAs7DOCNdrdwLiKKpbVr8MamTE12xrSpn3Mmv7BkPJBMGH6P2fYR/nQWBwtSQjNAWbnrGCPf26X5+JfubEO/NvW9NyEARaF49Rp+GjqalGM/A5AXbmVx+/4suqYfuZHVsQDxUWFEVAvhRG6BW5cJxLKQVSURQuKMyyIlNKsAem1vXrXVKQp8/jk88wyhmzeTAuSHRfJGu7682uFWcqwxACU7pj/OF3l2OQIvVKqqFPCRynHuI2KsEbPtbPQ0pfSqre7LL9W44K++Ul9HRsJDD7G1790s+eY3cso9ml8oKuash2IMzkOltHxPZvsug42qcuMxGhFjDZjx0au0ja4yLHjJVrd5s1pJ7fPP1dcRETB0KDz+OCQl0Q3YmFFW9Gw2hUGLtho6jdIOQy3fkxm/S0EAsRm7xFn4mDfslu7s2LTGGRvG9u3qTnjtWvV1WBg88AA88QRcdlmlb9Vj506IDuNMvusd9LsPptGpaU1N3xPgs+9SEEBsxobhyxRPd3dspW10jjLwPJ2X/QZxcce3tH51BgnrP1F/ERoK994LTz6ppjBrQKvd+umbLucfnRrT9d8bNMXoav2eFEWRdF3BtBgaZ/zLL7/Qo0cPYmNjSUhI4JZbbiErK8vIS/gUd+oBu4On3ZjtNroBV9fn/owmDGh7GZ2a1jTkBnHX6EX80ecWrr/zRhLWf0KxJYRjt9wBP/0ECxdqFmLQHot6T3oyoSEW7rymoVMhhr/ML1q/p8qiN4z6LgXBXQwV4+HDhxMZGcnXX3/Np59+Sn5+PqNHjzbyEj7FFyme7nTj8AVf//crCu+4k7dnD6HPz99gw8LKy7tyw/2v0Pnyu1h7IUr3ObUmQazbe4LO09Yz87OfHZ4nMS6yjEnByBRbSdcV/IWhZor9+/ezYMECWrduDcCQIUOYNGmSkZfwKb5I8TRdgZUDB7BNepZrly4lVFFTlFe1TOel9IH8XLsx4NkjvaskCHBs17UzukdzRnRrXua6Robt+TpdVyI7BDuGinHnzp1Zvnw51113HcXFxSX/dkRBQQEFBX89Nubm5ho5FUPwRW0B0xRYOXxYbW30xhuEFBcDsK5ZR2Z2HsTeuk3KHOroBqFHVJzFogJ0nrbeqRBbgPe2ZzGiW/My41q/J0VROJlbYJo6ERLZIZTGUDGeN28e7dq1o3r16iiKQosWLfjuO8ehV1OnTjX9rtkXKZ5+L7CSlQVTpqh1hYvU6IWT6dfzQNNb2JPUvNK32m8Q7oiKo1jUzQdPa3pKeGNTJrViIsqIvpbvCTBNuq4UYhfKY7jNuH379mzatIl169ZRs2ZNHn30UYfHjh8/npycnJIfszr67I/ViXFlxbC83dJd/FZgJTsbHnlE7agxf74qxD16ULxxEx9Pfc2lEIN6g/DU+Vgarbv/yav2MfK9XQxcuIXO09az9odsTd+Tt79LrZjVTyD4F8PijHfv3k1GRgYnT57EarUCkJmZSbNmzTh+/Dh169at9P1mjTO2403bnl3QwPGOzVCh+O03tcfcK6+o7Y4AunSByZNZm9DcacxyaeyP9F+OvZ6u/97g9Hj7cRvHddP0WW0+eJqBC7foWk75zygQMvC0rtMeQy0ELn6JM963bx+NGjUqEWKA5ORkIiMjyczMdCnGZsebKZ4+qex1+rTabfnllyE/Xx3r1EntttGtG2t/PFGp48xO6Uf6b4/8YajzUU+Kd+lrlHcourqWv9N1TeMnEEyFYWJcp04djh8/TlFREWFhYQCcOnWK8+fPk5iYaNRlghavFVg5exZmzIBZsyAvTx1r314V4RtvBItFc21kKHuDWLnrmKYpaBWVymy/lRFoLX387icQTIlhYtyxY0esVitDhgxh5MiRFBYWMnHiRNq3b0+jRo2MukxQY+iOLTcXXnoJXnwRcnLUsdatKZ44iW2p6fx2roA6h87QITlBc23kp2+6vCQhA7wjKs6eErQQKDvJqtQBRNCOYWIcHR3Nxx9/zGOPPcb1119PaGgonTt3ZtmyZVgsEjfpM86dgzlz4N//hjN/ZpNdcQVMmsTa5mlMWrWf7C1/FetJioukd6q2J5daMRFldureEpXyTwmn8gqYvGqfy/f9cvIcmw+eNn2srhRiFxwhhYKChQsXYN48eOEF+P13daxlS5g4Ee64g7V7TzotkqP1P4Ajh5Iz56MdR0kaeim2KXSetl6zLTlQYnUlzjj40aNrIsYmwCPv/sWLao2IKVPgxAl1rGlTmDABBg6EatVKxKyyqAeLBZxFUrmKiqischxoExhXn4Er0S8/XwiMKmz+juwQvIuIcQDh9u6osBAWL4bnn4df1Y7LNGqk1hi+6y61tOWf6AkZc/bY7ErYim0Kc9YfcFhPwtU5tH4GrkS//DX1hNUJgjfQo2vSHdqPuJUwUVSkZsu1aAHDhqlCXL++aqL4+We4//4yQgzaHVv3pzf2KCHive1HHY5Xlsig5zPolZrExnHdePfBNEZc37TSuUgVNiHQkHrGfkJ3reTiYnjnHZg0CQ4eVA9MTFSLuj/4oNruyAlaoxl6pCTyxE0pbj02u1PwyJ160faIE4nVFYINEWM/oVm8Dp6i07efq464n35Sf1m7Nowbp+6Mo1yXstQT9eBueJ074uhJxTqJ1RWCDTFT+AlX4mVRbPT6aRNX9M5QHXE//QQJCTB1Khw6BI8+qkmIQXsdYV8XPPJkd+u3mh6C4CVEjP2EU/FSFLof2MrHb4xi/odTiT34E8TFwbPPQmam2vCzenXd1zNjwSNPdre+uMEIgi8RM4WfsItXyWO6otA18ztGb1xCm+xfAMgLt3LinqE0f+EZqFHD42t6LeUa9xIZPE0a8UlND0HwERLa5kdWf5/N8KXfcu2R3YzZuJT2x9Qss/NhEbzRri+vdrgVa2KdgArP0huqZ0TFOonVFcyKxBkHCD+89zHn/jWetKwfALhYLZy3r+7D/I63cTo6vuS4QCulqFccJRNNCFb8UkJT0MHmzfDMM6R+9hkABaHVeKdNb+Z1vI3fYiqKbqCFZ+mNyPCm+UQQAgURY1+yYwc88wysWQOALSyMd67owdxOd5AdW9vp26pCeJa/awwLgr+RaApfsHs39O8P11yjCnFoKNx3H8r+n5h7x6OccCLEEp4lCFUHEWNv8uOPcPvt0KYNrFwJISHwj3/A/v2waBGhTZIlPEsQBEDE2Dv89BMMGgRXXgnLl6sl0f72N1Wc33pLbQL6J2ZpkikIgn8Rm7GRHDyotjN6+22w2dSxW29VU5mvvNLp28SBJQiCiLERHDkCzz0Hr7+uFvQB6NtXLepz9dWaTiEOLEGo2ogYe8KxY2o94ddeU0tbAvTqpYpwhw7+nZsgCAGFiLE7nDihFuxZsAAKCtSx7t1VEU5P9+/cfIxkvwmCMYgY6+H332H6dJg7V+05B5CRodqJu3b179z8gBky5+RmIAQLIsZaOHMG/vMfmD0b8vPVsbQ0VYS7d1ejJaoApYXv8Kl8Zn72S4Vj7B06fBEJYoabgSAYhdSmqIyzZ2HmTPUnL08da9dOLWfZu3eVEWEwX/85e4EhR92uITCakQrBj/TA85S8PDU6IjlZFd68PLjqKvjwQ9i+Hfr0qXJC7KhPnTO83X/OVbsmcNxvTxDMjIhxafLzsU2bRlGjxmqX5bNnUVJSYNky2LkT+vWrUiIMlQufK7xV4EhPuyZBCBTEZgyqM27+fAqem0LEmVOEAAcT6vNS+kC+7diTp1tdSa8Q/923Sttqa1WPAAVO5Rf4xGHlSvgqw1sFjqQZqRCMVG0xLiiAhQthyhTIziYCOBKfyOxrB/LhFddRHBKKJa/IZw4pR7iy1XrbYeWOoLnq0OEp0oxUCEaqppmisBBefRWaN4eHH4bsbLLj6zCu18N0f2A+71/ZneKQUMC/Nkgttlp79MLaH7K9Mge9guaLAkfSjFQIRqqUGBcXFnFg2svkJzeDoUMhKwvq1+fQpOl0vX8B/9v6Ri6FVnxY8IcNUqut1ts3C1fCVx5fFDiSZqRCMFI1zBTFxeyePo+EF1+g2eljAPweHc/b1w8ideKjXAgNp/C9XS5P40sbpB5bbembhdH1LbQ0Gh3VowWNa0X5NOlCmpEKwUZwi7HNBsuXc278U7Q+pCYonLbGMr/jbbzdtg8FYZGwbC+jejTXdDpf2iDdEX5v3SzMKnz+rnYn2X+CkQSnGCuKGhM8YQLs2UN14GxkdV7tcCtvtr2Z/IiokkMtwLvbjpIYG8nJXPdaxnsDd4TfmzcLfwufM/xV7U6y/wSjCS4xVhRYtUrtM7dzJwCXqscwu80tvN7+FvIioiu+BTiRW8DoHi2Y9dnPTh/FfW2DtNtqT+Q4vkGUxlc3CynzqeIs+8+XqeBC8BEcDjxFgU8+UetF9O2rCnH16vDkk6z9eDOz0wc6FOLSNK4VZaqOG5U5qUojDivfItl/grcI/J3x+vXqTnjTJvV1VBSMGAFjx7L2RBHPrNij6TR1YiLp1LRmpY/ivrYROrPVlsbfdtuqhp7sP3mKEPQQ2GKck6N2Xc7Lg8hIGDYMxo2DunWdPkqWp/wjvrNHcX/ZCMvban2dgSeURbL/BG8R2GIcF6eKb3Y2PPEE1KsH6K+nYDcHbD542uGu1982QrHVmgfJ/hO8RWCLMcCTT1YY0hqjG2KBBzOSAeg8bb3DXW/PlMRKbYQWVBthz5REn+5QJazKP7hyrPoj8kYIDgJfjB2g9RHRpsCCrzKBzAq/s+96R/VorslGuOXQadKb1XJzxvqQsCr/oSUJRpypgjsERzRFOYx4RLT/kb2+6bCm4x9a6ro+RLFNYfPB06zcdYzNB0+75XF3Vq/C2zUqhL+wO1bNEnkjBAdB2emj2KbQedp6TTG6RmLBeYcJI3az9nU526n7osOG8BdiKhJcUeU7fZSO0TWCeGuYpkI5CvD4+3vYdOBUmV2vUbtZKapuLuyO1X5t6tOpaU0RYsEjglKM4a9HyYToMI/PdW96suZjz14oYtBrW+k8bT1rf8h2mSSgAE+s2EPhJZvLc0tYlSAEL0ErxqAK8pbxPUiIDnfr/fa6uCO6NWPe4LbEW7ULu33XO2f9AZeRHWfyi0ib+rnLHbKEVQlC8BLUYgwQXi2EKQNSseC89m35f5d+bfeM90pNYu7f22q+bokD8JuKkRqOOJNf6NJkIUXVBSF4MVSMz507xwMPPEB8fDw1atRg0KBB5OTkGHkJt6jM+z1/cFvma/SMX5OcgB6zoAKcPV+ka66V1TUwc1F1IyJFBKEqY2ic8fDhw9m9ezfLly8nJiaG0aNHc//997N8+XIjL6ObYptCnDWcf/VqxZlzBSREh5MYZy3j/dZSHvLbI3/gjsbEW8PIuVCkqWuHq7oGZqwtLHHPguA5honxyZMneffdd9m/fz9NmzYFYPny5eTm5hp1CbeoTChKi62WlGN3HWP3pjdm1me/aD7e1XXMVFvY36nighAsGGam2LRpE02aNOGbb76hWbNmNG3alIULF9KiRQujLqEboxMk3GnOqToAm+uK7NByHTOEVUk5SUEwDsPE+PDhw/z+++/Mnj2bBQsWsGDBAt555x1eeOEFh8cXFBSQm5tb5sdIvCEU7RrV0GwzduQAdBXZEWgOOIl7FgTjMEyM8/PzuXjxIv/973/p3r07PXr0YMqUKSxatMjh8VOnTiUuLq7kp0GDBkZNBdAuFFsOndZ8Tj02Y0cOQC2RHYFU10DingXBOAwT4/DwcFJTU0lK+kt8UlJSOHr0KMXFxRWOHz9+PDk5OSU/WVlZRk0F0C4AWmpK6D3niOubsnFcN4e20mCqayBxz4JgHIY58JKSkjh69CiKomCxqDu7/Px8QkNDCQmpqPkRERFEREQYdfkKaBWAsxeKNDuatJ4zvVntSne3ZnLAeYKUkxQE4zBsZ9ypUydOnjzJsmXLSsaWL19O06ZNS8TZl7hKkCiPFvuxkUkXZnDAeYqZ454FIdAwTIybN29Or169+Mc//sHAgQPp168f06ZNY/jw4UZdQhd6igVpdTSJ+FQkmMwuguBPDC2heerUKYYNG8aaNWuoV68eQ4cO5dFHH9X0XiNLaJZm7Q/ZPP7+Hs5ecJ0J99KdbejXpr6mc0qSQ1mknKQgVESPrgVlPePybPrlFIMWbXV53LsPpmnuNSfiIwiCK/ToWlC2XSpPWtOahjuapEmoIAhGEvRV20BsvYIgmJ8qIcYgjiZBEMxNlTBT2AmW+F5BEIKPKiXGILZeQRDMSZUxUwiCIJgZEWNBEAQTYBozhT3c2d/F6AVBEIzCrmda0jlMI8Z5eXkAhpfSFARB8Dd5eXnExcVVeoxpMvBsNhvHjx8nJiZGV2Gh3NxcGjRoQFZWluGZe2Yh2Nco6wt8gn2N7q5PURTy8vKoV6+ew+qVpTHNzjgkJITLLrvM7ffHxsYG5X+C0gT7GmV9gU+wr9Gd9bnaEdsRB54gCIIJEDEWBEEwAQEvxhEREUyYMMGrXUP8TbCvUdYX+AT7Gn2xPtM48ARBEKoyAb8zFgRBCAZEjAVBEEyAiLEgCIIJEDEWBEEwAQEhxqdOneK2224jOjqaunXr8vTTTzvN9V63bh2pqalERkbSunVrNmzY4OPZ6kfP+lavXk379u2JioqiSZMmTJ061cezdQ89ayzNzJkzqVWrlg9m6Bl61rd9+3Y6duxIZGQkTZo0Yf78+T6erX70rO/NN9+kRYsWWK1WGjVqxKRJk3w8W89QFIW0tDTmzJnj9JilS5fSrFkzIiMjufbaa/n+++8NubDp6dOnj5KSkqJ8/vnnypo1a5S6desqM2fOrHDc4cOHFavVqgwdOlTZtWuXMmHCBKV69erKr7/+6vtJ60Dr+r744gslPDxcmTZtmvLjjz8q7777rlK9enVl2bJlvp+0TrSusTS//PKLYrValZo1a/pmkh6gdX2///67kpCQoDz00EPKzp07laVLlypRUVHKRx995PtJ60Dr+o4cOaJUq1ZNmTNnjrJ//35lxYoVSkxMjOnXZ+fSpUvKsGHDFEB5+eWXHR6zefNmJSQkRHnmmWeU77//XhkyZIhSr149JT8/36Nrm16MDxw4oADKzp07S8YWL16sNGnSpMKxTz31lNKmTRvFZrOVjHXp0kV59tlnfTFVt9CzvtGjRyujRo0qMzZ06FDln//8p7en6RF61mjHZrMpXbp0UQYMGGB6MdazvunTpytdunQpM7Zjxw7l7Nmz3p6m2+hZ32effabUrl27zFivXr2UadOmeXuaHrN161YlLS1Nady4sZKcnOxUjAcPHqz069ev5PWlS5eUJk2aKG+99ZZH1ze9mWLLli00btyYNm3alIz17t2bQ4cOcfLkyQrH9u/fv0yhod69e/PNN9/4arq60bO+GTNm8OKLL5YZCwkJ4eLFi76YqtvoWaOduXPncunSJUaMGOGjWbqPnvV9/fXXZGRkcP/991OrVi0yMjI0VfTyJ3rW17p1awoKClizZg02m40ff/yRHTt20KVLFx/PWj+zZs2iQ4cO7Ny5k4YNGzo9bsuWLQwYMKDkdWhoKD179vRYZ0wvxseOHaNx48ZlxhITE4mMjCQrK8vlscnJyRWOMxN61geUqfyUlZXF0qVL6dGjh7en6RF615iZmcnEiRNZvHixy0pXZkDP+g4fPsz8+fOJi4tj7dq13H777fTp04cjR474cMb60LO+WrVq8dZbb3HTTTcRFhZGamoqQ4cOJS0tzYczdo8333yTl156ifj4+EqP85bOmP5/ekFBgcMPx2q1cuHCBZfHOjrOTOhZX2mOHTtG7969SU9PZ+DAgV6coefoWaOiKDzwwAM89thjtGzZ0kcz9Aw968vPzycjI4MZM2bQvn17HnnkEbp3785bb73lo9nqR8/6srKyeOSRR3j55ZfZvn07CxcuZP78+Xz99dc+mq37hIWFaTrOWzpjmhKazrBarRQWFlYYv3DhAlar1eWxjo4zE3rWZ2fXrl3cfPPNXHPNNSxZssT0u0c9a3z11VfJyclh7Nixvpqex+hZX3h4OD179iwzlpKSQmZmplfn6Al61jdjxgxuuOEGHnroIQDatm1LVlYW06ZNIyMjwyfz9Tbe0hlz/xUDDRs25PDhw2XGfvvtNy5evFih/rGjY48cOeJRnWRvo2d9AFu3biUjI4Pbb7+dDz74gOjoaB/N1H30rHHs2LHs3r2b6OhoIiMjueGGGzh9+rSpd8l61peUlFTh2Pz8fKpVM+++SM/69u3bR6tWrcqMpaamcuDAAW9P02d4S2dML8bXXnstP/30U5nFf/LJJzRq1IjExMQyx6anp7NmzZoyY5988omp7VV61pednU3fvn0ZM2YMM2fO1NURxZ/oWeO2bdvYs2cPu3btYteuXbz22mvEx8ezevVqH89aO3rW16lTJ9555x3OnDkDqDuq1atX07x5c19OWRd61lenTp0KQnX06NEKxwUy5XXGZrOxbt06z3XGo1gMH3HbbbcpGRkZyo4dO5TPPvtMqVevnjJ9+nRl69atSsuWLZXHH39cURRFOX78uBITE6M8++yzyr59+5QpU6YoVqtVOXz4sJ9XUDla13fHHXco7dq1Uw4dOqRkZmaW/GRnZ/t5Ba7RusbybNiwwfShbYqifX2ZmZmK1WpVGjVqpAwZMkRp1aqVEhUVpZw8edLPK6gcretbsWKFEhUVpbz++uvK3r17lWXLlil16tRRZs+e7ecV6KNr164loW0ffPCB0rJly5LXO3fuVCIjI5UFCxYo+/btUx5++GGlbt26Sl5enkfXDAgx/uOPP5S///3vSvXq1ZWEhARl7NixSnFxsbJhwwYFUO6+++6SY7/66iulTZs2Snh4uHL55Zcra9eu9d/ENaJ1fRaLRQEq/HTt2tWv89eCnu+wNIEixnrW9+mnnyqpqalKVFSU0rVrV2XHjh3+m7hG9Kxv7ty5SqtWrRSr1aokJycrkyZNUi5duuS/ybtBaTF+/fXXFUCZMGFCye/ff/99pUWLFkp4eLjSvn17Q75DqWcsCIJgAkxvMxYEQagKiBgLgiCYABFjQRAEEyBiLAiCYAJEjAVBEEyAiLEgCIIJEDEWBEEwASLGgiAIJkDEWBAEwQSIGAuCIJgAEWNBEAQT8P+vIbe8qFhZtQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 400x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "X = np.random.rand(100, 1)\n",
    "w, b = np.random.randint(1, 10, size = 2)\n",
    "\n",
    "y = w * X + b + np.random.randn(100, 1)\n",
    "\n",
    "# ------------------------------\n",
    "\n",
    "#添加截距列\n",
    "X = np.concatenate([X, np.full(shape = (100, 1), fill_value = 1)], axis = 1)\n",
    "epoches = 10000\n",
    "\n",
    "t0 = 5\n",
    "t1 = 1000\n",
    "def learning_rate_schedule(t): # 可以被叫做逆时衰减函数\n",
    "    return t0 / (t + t1)\n",
    "\n",
    "#要求解的系数\n",
    "theta = np.random.randn(2, 1)\n",
    "\n",
    "times = 0\n",
    "for i in range(epoches):\n",
    "    #随机取出一个样本\n",
    "    idx = np.random.randint(0, 100, size = 1)[0]\n",
    "    X_random = X[[idx]] # (1,2)\n",
    "    y_random = y[[idx]] # (1,1)\n",
    "    #计算梯度\n",
    "    g = X_random.T @ (X_random @ theta - y_random)\n",
    "    #更新 theta\n",
    "    lr = learning_rate_schedule(times)\n",
    "    theta = theta - lr * g\n",
    "    times += 1\n",
    "\n",
    "print('真实的斜率和截距为', w, b)\n",
    "print('求出的斜率和截距为', theta.flatten())\n",
    "\n",
    "# ------------------------\n",
    "\n",
    "plt.figure(figsize = (4, 3))\n",
    "_ = plt.scatter(X[:, [0]], y)\n",
    "\n",
    "x2 = np.array([0, 1])\n",
    "_ = plt.plot(x2, x2 * theta[0] + theta[1], color = 'red')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1fd9f22b-553c-4b88-8f50-37a003cf6de1",
   "metadata": {},
   "source": [
    "#### 多元一次线性回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "71c5aff7-f065-4306-8bc9-e8727efadaa5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "真实的斜率和截距为 [4 7 6 9 9 4 3 2 4 9] [5]\n",
      "求出的斜率和截距为 [ 3.82246028  5.37901058  5.61879157  6.25663722  4.14572374  4.74922081\n",
      "  3.51209247  4.11539325  3.75799282  5.63340567 10.00478073]\n"
     ]
    }
   ],
   "source": [
    "m = 100 # 样本数\n",
    "n = 10 #特征数\n",
    "X = np.random.rand(m, n)\n",
    "w = np.random.randint(1, 10, size = (n, 1)) # 随机斜率\n",
    "b = np.random.randint(1, 10, size = (1, 1))[0] # 随机截距\n",
    "\n",
    "y = X @ w + b + np.random.randn(m, 1)\n",
    "\n",
    "# ------------------------------\n",
    "\n",
    "#添加截距列\n",
    "X = np.concatenate([X, np.full(shape = (m, 1), fill_value = 1)], axis = 1)\n",
    "\n",
    "epoches = 10000\n",
    "\n",
    "t0 = 5\n",
    "t1 = 1000\n",
    "def learning_rate_schedule(t): # 逆时衰减函数\n",
    "    return t0 / (t + t1)\n",
    "\n",
    "#要求解的系数数组，[theta_1, theta_2, ..., theta_n, theta_0]，最后一个 theta_0 呼应上边添加的一列\n",
    "theta = np.random.randn(n + 1, 1)\n",
    "\n",
    "times += 0\n",
    "for i in range(epoches):\n",
    "    #随机取出一个样本\n",
    "    idx = np.random.randint(0, m, size = 1)[0]\n",
    "    X_random = X[[idx]] # (1, n+1)\n",
    "    y_random = y[[idx]] # (1, 1)\n",
    "    #计算梯度\n",
    "    g = X_random.T @ (X_random @ theta - y_random)\n",
    "    #更新 theta\n",
    "    lr = learning_rate_schedule(times)\n",
    "    theta = theta - lr * g\n",
    "    times += 1\n",
    "\n",
    "print('真实的斜率和截距为', w.flatten(), b)\n",
    "print('求出的斜率和截距为', theta.flatten())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "cd2eb23a-3b99-43ff-a40f-734a77877ac6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "真实的斜率和截距为 6 8\n",
      "求出的斜率和截距为 [6.06128515 8.01255455]\n"
     ]
    }
   ],
   "source": [
    "X = np.random.rand(100, 1)\n",
    "w, b = np.random.randint(1, 10, size = 2)\n",
    "\n",
    "y = w * X + b + np.random.randn(100, 1)\n",
    "\n",
    "# ------------------------------\n",
    "\n",
    "#添加截距列\n",
    "X = np.concatenate([X, np.full(shape = (100, 1), fill_value = 1)], axis = 1)\n",
    "epoches = 10000\n",
    "\n",
    "t0 = 5\n",
    "t1 = 1000\n",
    "def learning_rate_schedule(t): # 可以被叫做逆时衰减函数\n",
    "    return t0 / (t + t1)\n",
    "\n",
    "#要求解的系数\n",
    "theta = np.random.randn(2, 1)\n",
    "\n",
    "batch_size = 16 # 每批样本数\n",
    "batch_num = 100 // batch_size # 一共多少批\n",
    "\n",
    "times = 0\n",
    "for i in range(epoches):\n",
    "    #随机取出一批\n",
    "    batch_idx_start = np.random.randint(0, batch_size * batch_num, size = 1)[0]\n",
    "    X_batch = X[batch_idx_start : (batch_idx_start + batch_size)]\n",
    "    y_batch = y[batch_idx_start : (batch_idx_start + batch_size)]\n",
    "    #计算梯度\n",
    "    g = X_batch.T @ (X_batch @ theta - y_batch)\n",
    "    #更新 theta\n",
    "    lr = learning_rate_schedule(times)\n",
    "    theta = theta - lr * g\n",
    "    times += 1\n",
    "\n",
    "print('真实的斜率和截距为', w, b)\n",
    "print('求出的斜率和截距为', theta.flatten())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "905e479e-f4b8-420f-8040-5310591285c0",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "62e00035-3cff-413c-8fd3-9c90b3ba1625",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
